socket编程执行远程命令实现_python
一、单客户端连接的例子:
服务端:
import socket,os,subprocess
server=socket.socket()
server.bind(('localhost',1234)) #绑定端口
server.listen() #监听
while True:
print('等电话打进来')
conn,addr=server.accept() #等电话打进来,返回值就是连接对象实例,和客户端地址
while True:
data=conn.recv(1024)
print(data)
if not data: #客户端是否断开连接判断
print('已断开连接')
break
#a=subprocess.Popen(data.decode('utf-8'),shell=True,stdout=subprocess.PIPE)
#res=a.stdout.read()#第二种执行命令返回结果的方法
res=os.popen(data.decode('utf-8')).read() #执行命令返回结果
print('res',res) #因为中文的原因,windows上的接收大小与源文件大小不一样需要提前encode
if len(res)==0:
res='cmd has no output'
data_len=len(res.encode()) #这里需要先encode(),然后再计算大小,不然与客户端计算大小方式有出入
print(data_len)
conn.send(str(data_len).encode()) #先发送本次结果数据大小给客户端验证 client_ack=conn.recv(1024)#两次数据发送不要在一起,防止出现粘包现象
conn.sendall(res.encode()) #相当于循环发送完整结果
客户端:
import socket
client=socket.socket() #声明socket类型,生成对象
client.connect(('localhost',1234))
while True:
msg=input('>>')
if len(msg)==0:continue
client.send(msg.encode('utf-8')) #只能发送bytes类型
data_len=client.recv(1024)
print(data_len)
client.send(b'ready!!') #防止粘包的回应
receive_len=0
while int(data_len.decode())>receive_len: #循环完整接收本次命令的结果
data=client.recv(10240)
receive_len=receive_len+len(data)
print(receive_len)
print(str(data,'utf-8')) client.close()
socket编程执行远程命令实现_python的更多相关文章
- Python网络编程03 /缓存区、基于TCP的socket循环通信、执行远程命令、socketserver通信
Python网络编程03 /缓存区.基于TCP的socket循环通信.执行远程命令.socketserver通信 目录 Python网络编程03 /缓存区.基于TCP的socket循环通信.执行远程命 ...
- Python中使用os模块执行远程命令
1. 使用os模块远程执行命令 服务端代码 1 import socket 2 import os 3 4 sh_server = socket.socket() #创建一个socket对象 5 sh ...
- Ubuntu 14.10 下SSH执行远程命令
有些时候需要在远程机器上执行命令,如果每次都等进去挺麻烦的,所以用脚本执行会方便很多.下面介绍一下在shell脚本中执行远程命令. 1,首先写好要运行的脚本 run-command.sh, 加上执行权 ...
- 在地铁上看了zabbix 的书发现 "报警执行远程命令"
在地铁上看了zabbix 的书发现 "报警执行远程命令" 远程命令整个过程: items -> triggers -> action -> remote com ...
- Zabbix报警执行远程命令
日常Zabbix报警案例中,大多都是报警发送邮件,场景里很少有需要报警后执行一个命令(启动服务.清空磁盘空间.关停服务器);而今天就给大家讲讲最近需要做的事:报警后执行远程命令 刚好zabbix动作中 ...
- 如何使用 PsExec 执行远程命令
前言 这紧紧只是一篇纯技术分享.我们的程序在运行时需要连接多台目标机器,并拷贝目标机器上特定文件夹中的文件.为了方便访问,要在每台目标机器上建立一个特定用户,所以 PsExec 成了实现此功能的一个方 ...
- (29)zabbix执行远程命令
概述 监控,有的人只把他当做报警使用,出现问题之后打开跑回家打开电脑,巴拉巴拉的处理掉,大多数时候都是一些小问题,为何不让zabbix帮你把这些事情处理掉呢?和朋友具体,收到xx硬盘空间慢了.xx服务 ...
- psexec局域网执行远程命令
执行远程命令的工具psexec.exe 下载 一.首先,被控制机器必须开启ipc$,以及admin$,否则无法执行 开启ipc$ net share IPC$ 开启admin$ net share A ...
- saltstack执行远程命令
目录 Remote Execution salt state salt state 系统 salt state 系统流程 Runner salt runner Orchestrate Runner S ...
随机推荐
- asp.net abp模块化开发之通用树2:设计思路及源码解析
一.前言 上一篇大概说了下abp通用树形模块如何使用,本篇主要分析下设计思路. 日常开发中会用到很多树状结构的数据,比如:产品的多级分类.省市区县,大多数系统也会用到类似“通用字典/数据字典”的功能, ...
- 原创: idea 的maven 方式配置 开发javaWeb(idea+tomcat +maven
通过idea 编辑器来配置基于maven创建站点,在tomcat上配置 在采用idea 配置之前,首先要确保maven和 tomcat 正确运行. maven 配置链接 tomcat 配置链接 实际你 ...
- 声明式服务调用:Spring Cloud Feign
最近在学习Spring Cloud的知识,现将声明式服务调用:Spring Cloud Feign 的相关知识笔记整理如下.[采用 oneNote格式排版]
- nginx 反向代理及 https 证书配置
nginx 反向代理及 https 证书配置 author: yunqimg(ccxtcxx0) 1. 编译安装nginx 从官网下载 nginx源码, 并编译安装. ./configure --pr ...
- 纪中10日T3 2296. 神殿 bfs
2296. 神殿 (File IO): input:temple.in output:temple.out 时间限制: 1500 ms 空间限制: 524288 KB 具体限制 Goto Prob ...
- Tomcat8.5安装与配置的坑
本文只是单纯记录一下tomcat配置的坑! 1.下载官网:https://tomcat.apache.org/下载后解压到根目录,盘符任意.但必须有jdk,本人用的是jdk1.8 2.配置环境变量在c ...
- 关于 DP 的一些内容
0.关于 动态规划是编程解题的一种重要手段.1951 年美国数学家 R.Bellman 等人,根据一类多阶段问题的特点,把多阶段决策问题变换为一系列互相联系的单阶段问题,然后逐个加以解 ...
- linux 下查看json 文件 使用jq工具
安装 文档 yum 安装 yum search jq yum -y install jq.x86_64 apt-get install jq jq支持查看 jq . json 文件 查看json文件 ...
- windows系统安装部署python3.5和python2.7双解释器并存
前提材料准备: 下载对应版本的安装包:下载地址:https://www.python.org/downloads/windows/ python3.8.x安装包下载: python2.7.x安装包下载 ...
- CSS相对定位与绝对定位
1.相对定位 Position : relative ; 特点: 1 如果没有定位偏移量,对元素本身没有任何影响: 2 不使元素脱离文档流,空间是会被保留: 3 不影响其他元素布局: 4 left.t ...