简单案例:非线程,基础循环版
<引子> 远程执行ssh命令模块
import subprocess
obj = subprocess.Popen('d2ir', shell = True,
stdout = subprocess.PIPE,
stderr= subprocess.PIPE)
print('sudout>:', obj.stdout.read().decode('GBK'))
print('stderr>:', obj.stderr.read().decode('GBK'))
服务端
import socket
import subprocess
obj = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
obj.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
obj.bind(('127.0.0.1', 8084))
obj.listen(5)
while True:
conn, ip= obj.accept()
print('用户接入:',ip)
while True:
try:
cmd = conn.recv(1024)
print('接收到用户指令',cmd)
sub = subprocess.Popen(cmd.decode('GBK'), shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout=sub.stdout.read()
stderr=sub.stderr.read()
conn.send(stdout+stderr)
except ConnectionResetError:
print('该客户断开已断开连接')
break
conn.close()
print('关闭管道')
obj.close()
客户端
import socket
obj = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
obj.connect(('127.0.0.1', 8084))
while True:
cmd = input('请输入指令>>>').strip()
if not cmd:
continue
obj.send(cmd.encode('GBK'))
data = obj.recv(1024)
print(data.decode('GBK'))
obj.close()