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 ...
随机推荐
- Javascript 基础学习(四)js 的语句
由于程序都是自上向下的顺序执行的,所以通过流程控制语句可以改变程序执行的顺序,或者反复的执行某一段的程序. 语句的分类 条件判断语句 条件分支语句 循环语句 条件判断语句 条件判断语句也称为if语句 ...
- 剑指offer-面试题65-不用加减乘除做加法-位运算
/* 题目: 在不使用加减乘除的前提下,计算两个整数之和. 思路: 不能使用加减乘除则只能考虑位运算. x=num1^num2,则为抹掉进位的结果. y=num1&num2,为只有进位的结果. ...
- DolphinScheduler1.2.1源码分析
DolphinScheduler在2020年2月24日发布了新版本1.2.1,从版本号就可以看出,这是一个小版本.主要涉及BUG修复.功能增强.新特性三个方面,我们会根据其发布内容,做简要的源码分析. ...
- C# 二进制 十进制 十六进制 之间的转换
; Console.WriteLine(a.ToString("X")); //10进制转16进制 Console.WriteLine(Convert.ToString(a, )) ...
- 《手把手教你构建自己的 Linux 系统》学习笔记(5)
交叉编译是什么? 交叉编译就是在一个系统上,编译生成另外一个系统运行的程序文件. 「硬件体系结构」和「操作系统」的关系是什么? 硬件体系结构也可以称为架构,主要是通过 CPU 的指令集来进行区分的,操 ...
- 高级UI组件(二)
1.图像视图 <ImageView android:id="@+id/imageView" android:layout_width="wrap_content&q ...
- CF #623 div.2
序 话说,总有人认为我是黑别人电脑的(雾??其实,我不黑电脑,我黑手机. T1 此题巨水,比较四个面积就就好了.. /* make by ltao */ #include <iostream&g ...
- 获取Servlet原生API
1.请求 <a href="param/test1">Servlet原生API</a> 2.处理方法 @RequestMapping("/para ...
- 【第三篇】C#调用lua文件
获取一个全局基本数据类型 使用LuaEnv.Global.Get<T>("name")就可以 var str = luaEnv.Global.Get<string ...
- Anaconda 包管理与环境管理
包管理命令 conda命令 安装包 conda install 包名称 卸载包 conda remove 包名称 更新包 conda update 包名称 模糊查询 conda search 包名称 ...