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 ...
随机推荐
- Vue中的$Bus使用
Vue中的$Bus使用 将Bus单独抽离成一个文件 Bus.js import Vue from 'vue'; let Bus = new Vue(); export default Bus; 创建两 ...
- 如何利用Azure DevOps快速实现自动化构建、测试、打包及部署
前两天有朋友问我,微软的Azure好用吗,适不适合国人的使用习惯,我就跟他讲了下,Azue很好用,这也是为什么微软云营收一直涨涨涨的原因,基本可以再1个小时内实现自动化构建.打包以及部署到Azure服 ...
- PHP0026:PHP 博客项目开发3
- python基础扩展
一.垃圾回收机制 垃圾回收机制是自动帮助我们管理内存,清理垃圾的一种工具 1.引用计数 当一个对象的引用被创建或者复制时,对象的引用计数加1: 当一个对象的引用被销毁时,对象的引用计数减1: 当对象的 ...
- HTML与CSS学习
HTML和CSS都是对页面前端的设计语言,两者是页面设计所必需掌握的两种语言.我自己的理解就是两种语言其中的HTML语言是一种标记语言,主要是对于页面的内容进行编写,表示.将自己想要在网页中表示的内容 ...
- 图片中添加箭头【使用PPT实现】
手头上可以使用的方案 QQ截图 分辨率会改变 画图 网上的教程一般是画一根线再加一个三角来画箭头,有点麻烦,改起来不好改. PS 对我来说,软件安装本身就是个问题, 插入图片,加入箭头,组合,另存为, ...
- SQL JOIN 的解析
1.SQL语句结构 select distinct < select_list > from < left_table > < join_type > joi ...
- 破局AI落地难,数据标注行业需率先变革丨曼孚科技
2019年,国内人工智能领域的投融资热情大幅降低,相当数量的AI企业彻底消失在了历史的长河中,“人工智能寒潮已至”甚至成为行业年度热词. 与前几年创业与投资热情齐头并进的盛况相比,近段时间的AI行业 ...
- SV 类继承的多态性问题(NVDIA2019笔试)
1.原题 class class_a; virtual function void print_name(); $display("this is class_a"); endfu ...
- 1-1.初始K8s
术语及原理 Master(主节点:control plane) 集群中的神经中枢网关.负责整个集群的资源管理.Pod调度.弹性伸缩.安全控制.系统监控.纠错等管理功能. ApiServer 集群的网关 ...