Python socker/subprocess模块练习(ssh案例)

 

 

 

'''
import socket

# (1) 构建套接字对象,确定通信协议
sock = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
ip_port = ("127.0.0.1", 8790)
sock.connect(ip_port)

while 1:
# 客户端给服务端发送消息
data = input("请输入命令:")
sock.send(data.encode())
if data == "q":
break

# data = sock.recv(1024)
# print("服务端响应消息:\n", data.decode())
cmd_res_bytes_len = sock.recv(1024)
cmd_res_len = int(cmd_res_bytes_len.decode())
recv_num = 0
while recv_num < cmd_res_len:
data = sock.recv(1024)
print(data.decode())
recv_num += len(data)

print("data的长度", recv_num,cmd_res_len)
'''

 

 

'''
import socket
import subprocess
# (1) 构建套接字对象,确定通信协议
sock = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
# (2) 绑定IP和端口
ip_port = ("127.0.0.1", 8790)
sock.bind(ip_port)
# (3) 监听最大排队数
sock.listen(2)
# (4) 阻塞等待客户端连接
while 1:
print("server is waiting...")
conn, addr = sock.accept()
# print("conn", conn)
# print("addr", addr)
while 1:
# 接受来自客户端的消息
data = conn.recv(1024) # recv是一个阻塞函数
print("data",data,type(data))
if data == b"" or data == b"q":
break
print("接受来自客户端的消息:", data.decode())
# 给给客户端发送消息:注意 send发送的字节
cmd = data.decode()
# 将cmd在本服务器上面执行
cmd_res_bytes = subprocess.getoutput(cmd).encode()
print("响应字节数",len(cmd_res_bytes))
cmd_res_bytes_len = str(len(cmd_res_bytes)).encode()
conn.send(cmd_res_bytes_len)
conn.send(cmd_res_bytes)
'''
posted @ 2022-05-10 22:05  呼长喜  阅读(67)  评论(0编辑  收藏  举报