码迷,mamicode.com
首页 > 其他好文 > 详细

模拟ssh实现远程执行命令

时间:2019-07-29 09:17:21      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:code   one   none   stream   strip()   hid   lin   enc   hide   

服务端必须满足至少三点:
1. 绑定一个固定的ip和port
2. 一直对外提供服务,稳定运行
3. 能够支持并发
技术图片
from socket import *

client = socket(AF_INET, SOCK_STREAM)
client.connect((127.0.0.1, 8081))

# 通信循环
while True:
    cmd=input(>>: ).strip()
    if len(cmd) == 0:continue
    client.send(cmd.encode(utf-8))
    cmd_res=client.recv(1024000)
    print(cmd_res.decode(gbk))

client.close()
客户端
技术图片
服务端必须满足至少三点:
1. 绑定一个固定的ip和port
2. 一直对外提供服务,稳定运行
3. 能够支持并发
from socket import *
import subprocess

server = socket(AF_INET, SOCK_STREAM)
server.bind((127.0.0.1, 8081))
server.listen(5)

# 链接循环
while True:
    conn, client_addr = server.accept()
    print(client_addr)

    # 通信循环
    while True:
        try:
            cmd = conn.recv(1024) #cmd=b‘dir‘
            if len(cmd) == 0: break  # 针对linux系统
            #subprocess.Popen 执行系统命令
            obj=subprocess.Popen(cmd.decode(utf-8),
                             shell=True,
                             stdout=subprocess.PIPE,
                             stderr=subprocess.PIPE
                             )
            stdout=obj.stdout.read()
            stderr=obj.stderr.read()
            print(len(stdout) + len(stderr))
            conn.send(stdout+stderr)
        except ConnectionResetError:
            break

    conn.close()

server.close()
服务端

 

模拟ssh实现远程执行命令

标签:code   one   none   stream   strip()   hid   lin   enc   hide   

原文地址:https://www.cnblogs.com/zhouhao123/p/11261824.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!