zoukankan      html  css  js  c++  java
  • day26-3 模拟ssh远程执行命令

    模拟ssh远程执行命令

    实现在客户端输入执行命令后,返回执行命令的信息。如输入dir,显示当前目录下的所有文件和文件夹

    服务器

    import socket
    import subprocess
    
    # 生成服务端
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # 绑定端口
    server.bind(('127.0.0.1', 8000))
    
    # 监听端口
    server.listen(5)
    
    print('start...')
    
    # 链接循环
    while True:
        # 等待客户端连接
        conn, client_addr = server.accept()
    
        # 通信循环
        while True:
            try:
                # 接收客户端发来的消息
                cmd = conn.recv(1024)
                print('来自客户端的数据:', cmd)
    
                # 帮你执行cmd命令,然后把执行后的结果放到管道里
                pipeline = subprocess.Popen(cmd.decode('utf8'),
                                            shell=True,
                                            stderr=subprocess.PIPE,  # 把标准错误放到管道里去
                                            stdout=subprocess.PIPE)  # 把正确的信息放到管道里去
    
                stderr = pipeline.stderr.read()
                stdout = pipeline.stdout.read()
    
                conn.send(stderr + stdout)
    
            except ConnectionResetError:
                break
    

    客户端

    import socket
    
    # 创建客户端
    client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    
    # 连接服务端端口
    client.connect(('127.0.0.1', 8000))
    
    while True:
        # 发送消息
        cmd = input('please enter msg>>>')
        client.send(cmd.encode('utf8'))
        
        # 接收消息
        data = client.recv(1024)
        print(data.decode('gbk'))
    
  • 相关阅读:
    作业3
    字符串的应用
    java类与对象
    作业
    水仙花数
    java例
    读书笔记(构建之法-11.19)
    补psp进度(11月4号-9号)
    PSP进度(11~16)
    团队项目-约跑软件需求规格说明书
  • 原文地址:https://www.cnblogs.com/863652104kai/p/11093262.html
Copyright © 2011-2022 走看看