脚本命令远程访问计算机,在远程电脑上执行任意命令 (利用 Autohotkey ahk http 服务器)...

经常会有个需求,就是在远程电脑上执行命令。如果远程电脑是windows系统的话,系统自带的工具mstsc和telnet应该可以实现这个要求,不过用起来都不是很方便。

最好的效果是,能像运行本地命令一样运行远程命令,这样就可以很方便的将其脚本化了。

我的主力系统是windows,主力脚本软件是Autohotkey。首先,需要一个在两台电脑间传递消息的渠道,我选择的是http。http通讯需要客户端和服务端,客户端用curl,服务端用Autohotkey脚本。

curl直接去网上下windows版本就行了,服务端的实现网上也有现成的,下载地址:https://github.com/zhamlin/AHKhttp

下载的AHKhttp源码压缩包中有一个名为example.ahk的文件,双击运行它,如果报错 "Error: The leftmost character above is illegal in an expression",那可能是你的Autohotkey版本过低,去官网下个最新版的(点击下载后选择 Download Current Version); 如果报错 AHKsock 找不到,那么首先在这个网址  https://github.com/jleb/AHKsock 下载 AHKsock,解压缩后确定AHKsock.ahk这个文件的路径,然后在example.ahk中找到 #include 这一行,将 替换为 AHKsock.ahk 的实际路径。

此时example.ahk应该可以正常运行了,这个就是实际的http服务器端了,端口号默认8000,在文件中对应代码行 server.Serve(8000),你可以修改成你喜欢的端口号,修改后再次运行脚本即可。

此时打开浏览器,输入 http://127.0.0.1:8000,如果网页显示 Hello World 就说明http服务器ok。

接下来来看看如何利用这个http服务器来执行命令,这也很简单,首先要了解这个http服务器的工作原理,拿前面显示 HelloWorld 来举例,相关的代码如下:

paths["/"] := Func("HelloWorld")

HelloWorld(ByRef req, ByRef res) {

res.SetBodyText("Hello World")

res.status := 200

}

paths["/"] 中的 / 代表网站的根目录,意思是访问网站的根目录时会执行函数HelloWorld,即显示字符串"Hello World",然后返回http状态码200。那么如果你想执行其它的命令的话,就在函数HelloWorld里添加其它代码就行了,就是这么简单。

假设你要执行一个远程关机命令,可以在脚本中添加下面的代码:

paths["/close_pc"] := Func("close_pc")

close_pc(ByRef req, ByRef res) {

res.SetBodyText("close_pc")

res.status := 200

Run, %comspec% /c shutdown -s -t 60, , hide ;一分钟后关机

}

这样你用curl访问网址  http://服务器的ip地址:8000/close_pc,就可以实现远程关机的效果了。另外,如果你不想弄curl的话,也可以直接用任意浏览器访问这个网址,也一样能关机。

另外,如果想通过手机远程执行命令的话,也很简单,打开手机的浏览器访问上面那个网址或者使用Automate这个app里面的HTTP request命令。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值