使用subprocess模块执行远程命令

服务端代码

 1 import socket
2 import subprocess
3
4 sh_server = socket.socket()
5 sh_server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #重置IP和端口
6 sh_server.bind(('127.0.0.1',8001))
7 sh_server.listen(5)
8
9 while True: #链接循环
10 conn,addr = sh_server.accept() #阻塞,等待客户端过来链接
11 print('客户端信息',conn,addr)
12
13 while True: #通信循环
14 # 接收客户端发送过来的消息
15 print('----------接收命令')
16 cmd = conn.recv(buffer_size).decode('utf-8')
17 print('要执行的命令是:',cmd)
18 if cmd == 'exit' or cmd == 'quit':break
19 #使用subprocess模块执行远程命令
20 ret = subprocess.Popen(cmd,shell=True,
21 stdout = subprocess.PIPE,
22 stderr = subprocess.PIPE,
23 stdin = subprocess.PIPE)
24
25 err = ret.stderr.read()
26 if err:
27 ret_msg = err
28 else:
29 ret_msg = ret.stdout.read()
30 if not ret_msg:
31 ret_msg = "命令执行成功".encode('gbk')
32 print('---------命令执行完成')
33 conn.send(ret_msg)
34
35 conn.close()

客户端代码

 1 import socket
2
3 sh_client = socket.socket()
4 sh_client.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
5
6 sh_client.connect(('127.0.0.1',8001))
7
8 while True: #通信循环
9 cmd = input("请输入要执行的命令:")
10 if cmd == '': continue
11 if cmd =='exit' or cmd =='quit':break
12 sh_client.send(cmd.encode('utf-8'))
13 res_info = sh_client.recv(1024).decode('gbk')
14 print('命令执行结果是:',res_info)
15 sh_client.close()

Python中使用subprocess模块远程执行命令的更多相关文章

  1. Python之路 - Socket实现远程执行命令

    Python之路 - Socket实现远程执行命令 os模块实现

  2. Python学习总结 06 paramiko 远程执行命令

    有时会需要在远程的机器上执行一个命令,并获得其返回结果.对于这种情况,python 可以很容易的实现. 1 工具 Python paramiko 1) Paramiko模块安装 在Linux的Term ...

  3. Python中的subprocess模块

    Subprocess干嘛用的? subprocess模块是python从2.4版本开始引入的模块.主要用来取代 一些旧的模块方法,如os.system.os.spawn*.os.popen*.comm ...

  4. python中使用schedule模块定时执行任务

    python中有一个轻量级的定时任务调度的库:schedule.他可以完成每分钟,每小时,每天,周几,特定日期的定时任务.因此十分方便我们执行一些轻量级的定时任务. 代码如下: import sche ...

  5. python中的commands模块,执行出错:'{' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

    最近发现了python的commands模块,查看了下源码,使用的popen封装的,形成三个函数getstatus(), getoutput(), getstatusoutput() 源码如下: de ...

  6. Python中使用os模块执行远程命令

    1. 使用os模块远程执行命令 服务端代码 1 import socket 2 import os 3 4 sh_server = socket.socket() #创建一个socket对象 5 sh ...

  7. 【Python】模块学习之使用paramiko连接Linux,远程执行命令,上传下载、文件

    本文主要介绍paramiko远程执行linux命令,及在服务器上进行文件的上传.下载 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. ...

  8. python之实现批量远程执行命令(堡垒机)

    python远程批量执行 我并不是一个专业的开发,我一直在学习linux运维,对于python也是接触不久,所以代码写的并不是很规范简洁. 前段时间一个同学找我一起做一个自动化运维平台,我对pytho ...

  9. python 网络编程(远程执行命令与粘包)

    远程执行命令 先来学习一个新模块 , 一会用到的.. 新模块: subprocess 执行系统命令 r = subprocess.Popen('ls',shell=True,stdout=subpro ...

随机推荐

  1. Springmvc+Mybatis+shiro整合

    Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码学和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从最小的移动应用程序到最大的网络 ...

  2. django框架基础-ORM基础-长期维护

    ###############    ORM介绍  ################ """ ORM简介: ORM 全拼Object-Relation Mapping. ...

  3. GCC与静态库、动态库

    GCC 常用指令 1 man gcc gcc工作流程例如: gcc hello.c 1234567891011121314 //***第一步***gcc -E hello.c >hello.i ...

  4. smtp 邮件传输协议 qq版实现

    qq: telnet smtp.qq.com 587 (qq邮箱说明:http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28& ...

  5. Torque:轻应用背后的大蓄势 微软语音技术厚积薄发​

    Torque,为中国用户而来 此前,"微软车库"公开发布了一系列小而美的产品,它们全部由具有"极客创新"精神的微软员工在工作之外的时间构思和开发.Torque就 ...

  6. mysql表关联问题(第一卷:外键1对多之1)

    表关联的问题在开发中是必不可少的,现在我先简单的谈谈我的学习经验.先来说一下外键一对多的问题. 步骤1:准备数据: (1)设计模拟场景: 一个游戏为了测试游戏的运行情况,招来了一批用户来试玩,现需要录 ...

  7. UAC table

    CREATE TABLE `sys_dept` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号', `name` varchar(50) D ...

  8. 整合SSM遇到的错误,数据库连接失败问题集合

    Could not get JDBC Connection; nested exception is java.sql.SQLException: Connections could not be a ...

  9. Vimmer一套全语言支持的完美Vim配置——附Monaco字体

    本配置轻量,强大,支持流行语言,包括现代前段框架react,jsx,vue,pug(jade)高亮和格式化,支持各种语言的自动补全.同时新增了MonacoNerd字体,可以显示文件类型logo,Mon ...

  10. Android开发之《libyuv库的使用》

    转自:http://bashell.nodemedia.cn/archives/build-google-libyuv-with-ndk-for-android.html 官方网站:https://c ...