将命令从命令行发送到Unix中正在运行的Python脚本
发布时间:2020-12-15 22:14:37 所属栏目:安全 来源:网络整理
导读:我想构建一个可以在从另一个脚本运行时控制的脚本.例如,我想像这样运行我的脚本: ~: Server 并能够运行其中一个功能,如: ~: client func1 在我搜索时,我发现信号模块有我想要的东西,但它的信号是预先定义的,我无法发送自己的信号. 我即使使用网络框架进行
我想构建一个可以在从另一个脚本运行时控制的脚本.例如,我想像这样运行我的脚本:
~: Server & 并能够运行其中一个功能,如: ~: client func1 在我搜索时,我发现信号模块有我想要的东西,但它的信号是预先定义的,我无法发送自己的信号. 我即使使用网络框架进行客户端/服务器实现,但我认为这对于我希望我的脚本具有的功能来说太过分了. 谢谢你们. 解决方法
如果您只是尝试将命令单向发送到服务器,那么使用Python的
Sockets比您想象的要容易.代码示例当然是准确的,因为它们不进行错误处理,并且不调用recv multiple确保消息完整的时间.这只是为了让您了解处理命令所需的代码行数.
这是一个服务器程序,它只接收消息并打印到stdout.请注意,我们使用线程,以便服务器可以一次监听多个客户端. import socket from threading import Thread MAX_LENGTH = 4096 def handle(clientsocket): while 1: buf = clientsocket.recv(MAX_LENGTH) if buf == '': return #client terminated connection print buf serversocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) PORT = 10000 HOST = '127.0.0.1' serversocket.bind((HOST,PORT)) serversocket.listen(10) while 1: #accept connections from outside (clientsocket,address) = serversocket.accept() ct = Thread(target=handle,args=(clientsocket,)) ct.start() 这是一个向其发送命令的客户端程序. import socket import sys HOST = '127.0.0.1' PORT = 10000 s = socket.socket() s.connect((HOST,PORT)) while 1: msg = raw_input("Command To Send: ") if msg == "close": s.close() sys.exit(0) s.send(msg) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |