Python中使用subprocess模块远程执行命令


使用subprocess模块执行远程命令

服务端代码

 1 import socket
 2 import subprocess 3 4 sh_server = socket.socket() 5 sh_server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #重置IP和端口 6 sh_server.bind(('127.0.0.1',8001)) 7 sh_server.listen(5) 8 9 while True: #链接循环 10 conn,addr = sh_server.accept() #阻塞,等待客户端过来链接 11 print('客户端信息',conn,addr) 12 13 while True: #通信循环 14 # 接收客户端发送过来的消息 15 print('----------接收命令') 16 cmd = conn.recv(buffer_size).decode('utf-8') 17 print('要执行的命令是:',cmd) 18 if cmd == 'exit' or cmd == 'quit':break 19 #使用subprocess模块执行远程命令 20 ret = subprocess.Popen(cmd,shell=True, 21 stdout = subprocess.PIPE, 22 stderr = subprocess.PIPE, 23 stdin = subprocess.PIPE) 24 25 err = ret.stderr.read() 26 if err: 27 ret_msg = err 28 else: 29 ret_msg = ret.stdout.read() 30 if not ret_msg: 31 ret_msg = "命令执行成功".encode('gbk') 32 print('---------命令执行完成') 33  conn.send(ret_msg) 34 35 conn.close()

客户端代码

 1 import socket
 2 
 3 sh_client = socket.socket() 4 sh_client.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) 5 6 sh_client.connect(('127.0.0.1',8001)) 7 8 while True: #通信循环 9 cmd = input("请输入要执行的命令:") 10 if cmd == '': continue 11 if cmd =='exit' or cmd =='quit':break 12 sh_client.send(cmd.encode('utf-8')) 13 res_info = sh_client.recv(1024).decode('gbk') 14 print('命令执行结果是:',res_info) 15 sh_client.close()


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM