socket模拟ssh客户端和服务器
ssh服务端:
#ssh服务器
import os
import math
import socket
#创建套接字
server = socket.socket()
server.bind(("localhost", 6868))
server.listen()
while True:
conn, addr = server.accept()
while True:
#接收操作指令
recv_data = conn.recv(1024).decode("utf-8", "ignore")
if not recv_data:break
print("执行指令", recv_data)
#获取用户输入指令的结果,是字符串形式
send_data = os.popen(recv_data).read()
#获取要发送数据的大小
data_size = len(send_data)
#向客户端发送数据大小
conn.send(str(data_size).encode())
#接收数据大小确认
recv_data = conn.recv(1024).decode("UTF-8", "ignore")
#打印客户端要接收的数据大小
print(recv_data)
if recv_data == "接收数据大小为0":
send_data = "无数据输出"
conn.send(send_data.encode())
server.close()
ssh客户端:
#ssh客户端
import socket
import math
client = socket.socket()
client.connect(("localhost", 6868))
while True:
send_data = input(">>:").strip()
if not send_data:
continue
client.send(send_data.encode())
res_size = client.recv(1024).decode("utf-8", "ignore")
client.send("接收数据大小为{0}".format(res_size).encode())
recv_size = 0
res_data = ""
print(res_size)
while recv_size < int(res_size):
recv_data = client.recv(1024).decode("utf-8", "ignore")
res_data += recv_data
recv_size += len(recv_data)
else:
print(res_data)
client.close()

浙公网安备 33010602011771号