Python 3.6 socket 简单远程命令CS
来源:互联网 发布:修改 nginx的 变量 编辑:程序博客网 时间:2024/06/07 09:59
如果大家对python的socket不是很熟,或者网络通信过程不了解的话请先百度一下,我这里直接上示例了
Server 端
# -----------------------# __Author : tyran# __Date : 17-11-15# -----------------------# Serverimport socketimport subprocess# 创建套接字listen_fd = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)# 绑定ip和portlisten_address = ('127.0.0.1', 8888)listen_fd.bind(listen_address)# 设置套接字是否阻塞,一般都是阻塞的,如果不写也可以,默认就是阻塞listen_fd.setblocking(True)# 启动监听,参数是排队数量,不包括已经连上的一个,我在linux下测试失败了。。。。一直都是5listen_fd.listen(2)while True: # 开始监听,accept()如果没有客户端连上来,会阻塞 # 返回值是有两个值,第一个是通信套接字,第二个是客户端信息 connected_fd, client_address = listen_fd.accept() print(connected_fd) print(client_address) print('=============================================') """ 这里我会做一个远程命令调用,我的平台是linux """ while True: # 然后接收客户端传来的命令 command_data = connected_fd.recv(1024) # 如果客户端断开,会发送过来一个空字符串’‘ if not command_data: # 关闭套接字 connected_fd.close() break # subprocess可以重启一个新的进程执行命令 command_obj = subprocess.Popen(str(command_data, encoding='utf-8'), shell=True, stdout=subprocess.PIPE) # stdout_data就是命令执行以后的输出 stdout_data = command_obj.stdout.read() # 先把一共发送多少个字节数据发过去 connected_fd.send(bytes(str(len(stdout_data)), encoding='utf-8')) # 这里需要防止粘连 connected_fd.recv(1024) # 发送命令行输出的数据 connected_fd.sendall(stdout_data)
Client 端
# -----------------------# __Author : tyran# __Date : 17-11-15# -----------------------# Clientimport socketconnect_fd = socket.socket()connect_fd.connect(('127.0.0.1', 8888))while True: cmd = input('>>>>') if cmd == 'exit': connect_fd.close() break # 发送命令 connect_fd.send(bytes(cmd, encoding='utf-8')) # 获取字节数 data_len = int(str(connect_fd.recv(1024),encoding='utf-8')) # 防止粘连 connect_fd.send(bytes('ok', encoding='utf-8')) # 显示数据 data = '' while len(data) < data_len: data += str(str(connect_fd.recv(1024),encoding='utf-8')) print(data)
阅读全文
0 0
- Python 3.6 socket 简单远程命令CS
- Python 3.6 简单文件上传CS
- python socket c/s远程命令执行案例
- 通过python socket远程执行命令,并返回值
- Python:通过Socket让远程电脑执行某些命令
- Python调用远程Socket接口
- Python Socket 简单应用
- python socket简单使用
- Python + Socket 简单例子
- python 简单socket编程
- Socket加入多线程通信实现简单的CS聊天室
- cs命令
- linux 下远程执行命令 socket实现
- java socket远程控制主机,执行命令
- python 多线程远程执行命令
- Python远程执行Linux命令
- Python socket 简单示例程序
- 简单的python socket连接
- [Unity][Calendar]制作日历的思路
- python对mysql的操作
- 结构体的初始化及访问
- 树莓派终端设置字体大小
- WPF-MVVM-ICommand接口实现
- Python 3.6 socket 简单远程命令CS
- 【python网络爬虫三】爬取动态数据及数据入库
- 英特尔全栈解决方案,助推人工智能在多领域的落地发展
- 大型网站架构之分布式消息队列
- Android studio 检测代码是否规范的工具
- GreenDao概要
- python CPU密集型对IO密集型 多进程更优于多线程 GIL
- 1-1 欢迎来的C++世界
- Android RecyclerView 详解(2)---网格布局(支持多种分割线)