通过简易http服务器来远程执行命令
专栏:ExASIC Oct. 27, 2024, 10:18 a.m. 12 阅读
通过简易http服务器来远程执行命令

有时候,我们需要进行远程控制。比如远程开灯、开锁,其本质都是远程执行一个脚本,或者发送一个tcp请求,让远程硬件执行动作。

服务端

今天要介绍的是远程执行脚本,完成网站的自动部署。起因是权限原因,使用者没有权限,每次部署时都需要手动切换成管理员用户。这个案例中,以管理员身份启动一个http服务器,监控网站部署请求,如果收到请求就执行部署脚本。这样通过http请求绕开了权限问题。

下面是python的httpserver端代码,在收到get请求后,通过os.system("script")来执行脚本。

from http.server import HTTPServer, BaseHTTPRequestHandler
import os

class myResquestHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        os.system("/bin/csh deploy.csh")
        self.wfile.write("updated successfully".encode('utf-8'))

if __name__ == '__main__':
    host = ('0.0.0.0', 8001)
    server = HTTPServer(host, myResquestHandler)
    print("Starting Renato Auto Deployment Server")
    server.serve_forever()

注意:
这里的0.0.0.0表示广域网的所有计算机都可以控制,包括手机等。如果只接受本机,可以用127.0.0.1

客户端

客户端可以是电脑或者手机浏览器,也可以本地脚本。这里以本地shell脚本为例:

curl http://192.168.0.16:8001/deploy
感谢阅读,更多文章点击这里:【专栏:ExASIC】
最新20篇 开设专栏