python案例远程执行命令

------类似于cmd的功能,client执行命令,server发命令结果发送到client

-----------server.py-------------------

import subprocess#subprocess.Popen,主要用Popen这个类实现shell

import socketsk=socket.socket()print(sk)address=(‘127.0.0.1‘,8003)sk.bind(address)sk.listen(3)print(‘waiting.....‘)while True:    conn,addr = sk.accept()    print(addr)    while True:        try:            data = conn.recv(1024)        except Exception:            break        if not data: break        print(‘.....‘, str(data, ‘utf8‘))        obj=subprocess.Popen(str(data,‘utf8‘),shell=True,stdout=subprocess.PIPE)        #stdout=subprocess.PIPE表示通过管道PIP由你的子进程转到我主进程并封装到obj对象里     ----即这一行和下面这一行的功能就是把client发来指令的结果解出来
        cmd_result=obj.stdout.read()        result_len=bytes(str(len(cmd_result)),‘utf8‘)   #算出它的大小        conn.sendall(result_len)      #把这个大小的数字传给client

        conn.recv(1024)

        conn.sendall(bytes(cmd_result))sk.close()

-----------------------------client.py-------------------------------
import socketsk=socket.socket()print(sk)address=(‘127.0.0.1‘,8003)sk.connect(address)while True:    inp=input(‘>>>‘)    if inp == ‘exit‘:        break    sk.send(bytes(inp,‘utf8‘))

    result_len=int(str(sk.recv(1024),‘utf8‘))

    sk.sendall(bytes(‘111‘,‘utf8‘))

    print(result_len)    data=bytes()    while len(data) != result_len:        recv= sk.recv(1024)        data+=recv

    print(str(data,‘gbk‘))sk.close()
结果如下图:在client执行dir和ipconfig等命令能拿到结果



原文地址:https://www.cnblogs.com/dbslinux/p/11239650.html

时间: 2024-11-05 23:36:43

python案例远程执行命令的相关文章

Python学习---远程执行命令

原则:发送一个接受一个 原理:发送执行命令的大小给客户端,客户端根据接受的大小判断是否全部接收了服务器sendall()发送的全部 利用send发送的全部数据都是bytes类型的,需要进行字符编码的转换,因为中文环境,所以需要转换GBK查看 客户端: # 客户端 import socket # family=AF_INET, 代表使用IPV4的IP协议 # type=SOCK_STREAM 代表使用TCP协议进行连接 client = socket.socket() ip_addr = ('12

python批量远程执行命令

#!/usr/bin/env python #Kiss Python ############## ##### ip.list ################################# #     172.16.13.118:root:centos:hostname:                                                       # #     172.16.5.114:root:centos:hostname:whoami:w:ifcon

通过python socket远程执行命令,并返回值

#!/usr/bin/env python#  TCP-Serverimport socketimport subprocesssk_obj = socket.socket(socket.AF_INET,socket.SOCK_STREAM)sk_obj.bind(('127.0.0.1',8000))sk_obj.listen(5)while True:    conn,ipaddr = sk_obj.accept()    print ('connection from ip: %s' %

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

python远程批量执行 我并不是一个专业的开发,我一直在学习linux运维,对于python也是接触不久,所以代码写的并不是很规范简洁. 前段时间一个同学找我一起做一个自动化运维平台,我对python的django还没有了解,并且对于HTML和JS这类开发学习还没有涉及,所以我说我做些后台的实现,前端就交给我的同学做.不扯淡了,下面说下我做批量执行的思路. 用到的模块:paramiko 功能:很简单就是批量执行命令,类似于ansible,本来想用Fabric,但是想一想还是用paramiko,

python模块paramiko的上传下载和远程执行命令

#!/usr/bin/python # -*- coding: utf-8 -*- import paramiko,os,datetime server_ip = '192.168.1.123' server_user = 'root' server_passwd = '10241010' server_port = 22 #local_dir='C:\Python27' #remote_dir='/soft2/nba/' def ssh_connect(): ssh = paramiko.SS

python 实现ssh远程执行命令 上传下载文件

使用密码远程执行命令 [[email protected] script]# cat daramiko_ssh.py  #!/usr/bin/env python #_*_coding:utf-8 _*_ __author__ = 'gaogd' import paramiko import sys,os host = sys.argv[1] user = 'root' password = 'ddfasdsasda2015' cmd = sys.argv[2] s = paramiko.SSH

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

远程执行命令 先来学习一个新模块 , 一会用到的.. 新模块: subprocess 执行系统命令 r = subprocess.Popen('ls',shell=True,stdout=subprocess.PIPE, stderr=subprocess.PIPE) subprocess.Popen(a,b,c,d) a: 要执行的系统命令(str) b: shell = True 表示确定我当前执行的命令为系统命令 c: 表示正确信息的输出管道 d: 表示错误信息的输出管道 下边直接上代码,

day8-套接字sock 实现SSH远程执行命令功能

复习 #面向对象编程#类:#对象#实例化 :从一个类到产生一个对象的过程    #对象 = 类名()   #__init__初始化方法,是为了给一个具体的对象放一些初识的属性#在类中:    # 静态属性 直接定义在类中的属性,使用静态属性:类名.对象名都可以调用    # 动态属性 就是方法 就是定义在类中的函数 默认传一个self# class Person:#     money = 100# sister = Person()# father = Person()# Person.mon

远程执行命令:paramiko

paramiko模块用于通过 ssh 登录到远程客户端主机并执行命令,常见用法如下: [[email protected] ~]$ yum install -y python-paramiko 通过用户名密码登录远程客户端主机并执行命令: #!/usr/bin/env python #-*- coding:utf-8 -*- import paramiko ssh = paramiko.SSHClient() # 创建一个ssh客户端对象 ssh.set_missing_host_key_pol