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

#!/usr/bin/env python
#  TCP-Server
import socket
import subprocess
sk_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‘ % ipaddr[0])
    while True:
        try:
            from_recv = conn.recv(8096)
            if len(from_recv) == 0:continue
            print (‘from ip : %s information : %s‘ % (ipaddr[0],from_recv))
            res = subprocess.Popen(from_recv.decode(‘utf-8‘),shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
            msg = res.stdout.read()
            if len(msg) == 0:
                msg = res.stderr.read()
            conn.send(msg)
        except Exception:
            break
    conn.close()
sk_obj.close()

#!/usr/bin/env python
#  TCP-Client
import socket
import sys
sk_obj=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sk_obj.connect((‘127.0.0.1‘,8000))
while True:
    msg = raw_input(‘-->‘).strip()
    if len(msg)==0:continue
    sk_obj.send(msg.encode(‘utf-8‘))
    data = sk_obj.recv(8096)
    print (‘Server send information : %s‘ % data.decode(‘utf-8‘))
sk_obj.close()

时间: 2024-10-25 03:42:56

通过python socket远程执行命令,并返回值的相关文章

socket远程执行命令

两个脚本模拟远程执行命令 cmd_server.py import socket import subprocess sk = socket.socket() addess = ('127.0.0.1', 8000) sk.bind(addess) sk.listen(3) conn, addr = sk.accept() print('有客户端连接:', addr) data = conn.recv(1024) obj = subprocess.Popen(str(data, 'utf8'),

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

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

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

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 网络编程(远程执行命令与粘包)

远程执行命令 先来学习一个新模块 , 一会用到的.. 新模块: 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: 表示错误信息的输出管道 下边直接上代码,

socket 基于udp实现远程执行命令

server.py # socket 基于udp实现远程执行命令 from socket import * import subprocess ip_port = ('127.0.0.1', 8080) buffer_size = 1024 udp_server = socket(AF_INET, SOCK_DGRAM) udp_server.bind(ip_port) while True: cmd, addr = udp_server.recvfrom(buffer_size) cmd =

粘包产生的原因 socket 基于tcp实现远程执行命令(解决粘包)low

# 粘包产生的原因 # 粘包问题主要还是因为接收方不知道消息之间的界限,不知道一次性提取多少字节的数据所造成的. # 基于tcp协议的套接字会有粘包现象,而基于udp协议的套接字不会产生粘包现象 # tcp是基于数据流的,于是收发的消息不能为空,这就需要在客户端和服务端都添加空消息的处理机制,防止程序卡住:而udp是基于数据报的,即使你输入的是空内容,那也不是空消息,udp协议会帮你封装上消息头(ip+端口的方式),这样就有了消息办界 # 两种情况下会发生粘包 # 1.发送端需要等缓冲区满才发送

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