使用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. mysql 实现类似开窗函数的功能

    mysql8 已经支持开窗函数 https://dev.mysql.com/doc/refman/8.0/en/window-functions.html ———————————————— sql s ...

  2. require.ensure和require.context

    require.ensure和require.context https://www.cnblogs.com/fantasy-zxf/p/6760390.html https://www.jiansh ...

  3. sqlserver多表联查分页

    select * from(select H_order.Id ,H_order.userID, ROW_NUMBER() over (order by H_order.Id Desc) as row ...

  4. Redmine it!

    redmine插件开发简介 最稳妥的学习应该是先看官方文档,官方还给了一个具体的插件开发教程,不过如果一步不差按照教程敲代码,其实会发现还是有些问题的,需要稍稍改动. 这里,我自己编写了一个简单的插件 ...

  5. $(document).ready()和window.onload方法

    引用:http://www.jb51.net/article/21628.htm Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload ...

  6. js页面--年份自动增加

    ) { document.write("-" + new Date().getFullYear()); }</script> // 大于2017年自动加上 - 年份

  7. Hexo博客部署

    前些天使用wordpress程序搭建了个人网站,但感觉太重比较适合个人空间,所以这次介绍Hexo搭建免费博客,先提供官网给大家英文版的请点击这里,中文版的请点击这里,在安装一个Git,再是github ...

  8. Java IO: 字节和字符数组

    原文链接  作者: Jakob Jenkov   译者:homesick 内容列表 从InputStream或者Reader中读入数组 从OutputStream或者Writer中写数组 在java中 ...

  9. vue项目根目录下index.html中的id="app",与src目录下的App.vue中的id="app"为什么不会冲突

    感谢:https://blog.csdn.net/qq_35624642/article/details/78243413 index.html <body> <div id=&qu ...

  10. Apollo核心概念之“Namespace”

    转载于https://github.com/ctripcorp/apollo,by Ctrip, Inc. Apollo核心概念之“Namespace” 1. 什么是Namespace? Namesp ...