ssh_socket.py
ssh_socket_client
import socket import os client = socket.socket() client.connect(('192.168.171.129',2)) while True: cmd = input(">>:").strip() if len(cmd) == 0: continue client.send(cmd.encode('utf-8')) cmd_res_size = client.recv(1024) ##接受命令结果长度 #print("命令结果长度",cmd_res_size) client.send("可以发数据了".encode("utf-8")) received_size = 0 while received_size < int(cmd_res_size.decode()): data = client.recv(1024) received_size += len(data)#每次收到的可能小于1024,所有必须用len判断 #print(data.decode()) else: print(data.decode()) print("命令结果长度", cmd_res_size) print("cmd received done..发送长度",received_size) #cmd_res = client.recv(1024) #print(cmd_res.decode()) client.close()
ssh_socket_server
import socket import os server = socket.socket() server.bind(('0.0.0.0',2)) server.listen(10) while True: print("开始接收指令:") conn,addr = server.accept() print("new conn:",addr) while True: print("等待新指令:") data = conn.recv(1024) if not data: print("客户端已断开") break print("执行指令:",data) cmd_res = os.popen(data.decode()).read()#接受字符串,收也为字符串 print("before send",len(cmd_res)) if len(cmd_res) == 0: print("received none") conn.send(str(len(cmd_res.encode())).encode("utf-8")) #time.sleep(0.5) client_ack = conn.recv(1024)#wait cclient to confirm conn.send(cmd_res.encode("utf-8")) print("send done") server.close()