基于TCP_socket套接字实现远程执行命令
2017-11-30 16:41
232 查看
基于tcp的套接字实现远程执行命令的操作
——客户端敲命令,服务端执行
#服务端 import socket import subprocess phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) ip_port=("127.0.0.1",8080) phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) phone.bind(ip_port) phone.listen(5) while True: conn,addr=phone.accept() print(addr) while True: try: cmd=conn.recv(1024) res=subprocess.Popen(cmd.decode("utf8"), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) #注释掉的这么多行,是因为在linux系统下同时执行多条命令,命令中如果有对有错的话res.stderr.read()和res.stdout.read()都会有返回值。 #err=res.stderr.read() #if err: # cmd_res=err #else: # cmd_res=res.stdout.read() #conn.send(cmd_res) #修改为: conn.send(res.stdout.read()) conn.send(res.stderr.read()) except Exception: break conn.close() phone.close()
#客户端 import socket phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) phone.connect(("192.168.85.129",8080)) while True: cmd=input(">>:").strip() if not cmd:continue phone.send(cmd.encode("utf8")) data=phone.recv(8192) #当命令行打印的东西太长时,接收超过1024,所以这里修改为8192 print(data.decode("utf8")) #当服务端运行在linux系统下,为utf8;服务端在windows下运行时,为gbk phone.close()
当服务端运行在Windows系统下,若客户端发送给服务端识别window系统的命令,服务端将执行windows系统命令的结果发送给客户端显示,不能识别的则发送错误信息给客户端。
同样当服务端在linux系统下运行,若客户端发送给服务端识别linux系统的命令,服务端将执行windows系统命令的结果发送给客户端显示,不能识别的则发送错误信息给客户端。
相关文章推荐
- Python socket套接字实现C/S模式远程命令执行功能案例
- python socket 实现远程执行命令 上传 下载文件
- Linux下用socket实现远程执行命令
- linux 下远程执行命令 socket实现
- linux 下远程执行命令 socket实现
- java分布式开发TCP/IP NIO无阻塞 Socket((基于消息方式实现系统间的通信) )(转)
- ios实现基于socket tcp/ip 的通讯
- Socket远程执行命令并结果回传(客户端)
- 基于C#的socket编程的TCP异步实现
- ios实现基于socket tcp/ip的通讯
- 基于TCP的socket通信,实现加减乘除和文件写入(方法二)
- 基于C#的socket编程的TCP同步实现
- paramiko模块实现批量执行远程主机命令
- JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
- jenkins 2:用ssh agent插件在pipeline里实现scp和远程执行命令
- Socket远程执行命令并结果回传(服务端)
- JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
- Python paramiko模块 实现 ssh远程执行命令 上传下载文件 堡垒机模式下的远程命令执行
- osgi实战学习之路:5.生命周期及利用命令、装饰者模式实现基于socket交互Bundle命令demo
- JSch:纯JAVA实现远程执行SSH2主机的SHELL命令