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()