zoukankan      html  css  js  c++  java
  • 模拟ssh实现远程执行命令

    服务端必须满足至少三点:
    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()
    服务端
  • 相关阅读:
    【Codeforces 475F】—Meta-universe(Set)
    【Codeforces 475F】—Meta-universe(Set)
    【UOJ #79】—一般图最大匹配(带花树)
    【UOJ #79】—一般图最大匹配(带花树)
    【NOIp2019模拟】题解
    【NOIp2019模拟】题解
    涉及到的业务逻辑总结
    2016-9-14
    Spring MVC
    2016-9-12
  • 原文地址:https://www.cnblogs.com/zhouhao123/p/11261824.html
Copyright © 2011-2022 走看看