CS架构实现远程命令传输
#客户端
import socket
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
phone.connect(('127.0.0.1', 8888))
while True:
msg = input("请输入命令:").strip()
if len(msg) == 0: continue
phone.send(msg.encode('utf-8'))
msg = phone.recv(8080)
print(f'{msg.decode("utf-8")}')
phone.close()
#服务器
import socket,
import subprocess
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
phone.bind(('127.0.0.1', 8080))
print('等待连接中')
phone.listen(5)
while True:
conn, addr = phone.accept()
print(f'客户端:{addr}')
try:
while True:
msg = conn.recv(1024)
if len(msg) == 0:
break
print(f'来自客户端消息:{msg.decode("utf-8")}')
res = subprocess.Popen(msg.decode("utf-8"), shell=True, stdout=subprocess.PIPE)
res = res.stdout.read().decode('gbk')
if res:
conn.send(res.encode('utf-8'))
else:
conn.send('没有消息输出'.encode('utf-8'))
except Exception:
conn.close()