socketserver版远程执行命令client端.
import socket
sk = socket.socket()
address = ("127.0.0.1", 8088)
sk.connect(address)
while True:
cmd = input("请输入命令:")
sk.sendall(bytes(cmd, encoding='utf8'))
if cmd == 'exit':
break
len_result = sk.recv(1024)
len_result = int(str(len_result, encoding='utf8'))
sk.sendall(bytes("ok", encoding='utf8'))
result = bytes()
while len(result) != len_result:
date = sk.recv(1024)
result += date
print(str(result, encoding='gbk'))
sk.close()
socketserver版远程执行命令server端
import socketserver
import subprocess
class Myserver(socketserver.BaseRequestHandler):
def handle(self):
print("服务器端启动")
conn = self.request
print(conn)
client_address = self.client_address
while True:
try:
cmd = str(conn.recv(1024), encoding='utf8')
except Exception as e:
print(e)
break
if cmd == 'exit':
break
print("客户端:{},命令:{}".format(client_address, cmd))
cmd_result = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
cmd_result_stdout = cmd_result.stdout.read()
cmd_result_stderr = cmd_result.stderr.read()
if len(cmd_result_stdout) == 0:
result = cmd_result_stderr
else:
result = cmd_result_stdout
conn.sendall(bytes(str(len(result)), encoding='utf8'))
conn.recv(1024)
conn.sendall(result)
conn.close()
if __name__ == '__main__':
server = socketserver.ThreadingTCPServer(('127.0.0.1', 8088), Myserver)
server.serve_forever()
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。