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'))
    
  • 相关阅读:
    JS 操作属性
    JS 操作对象 事件 样式
    JS 一个页面关闭多个页面
    JS DOM
    JS 语言基础
    JS 基础知识
    CSS样式表
    HTML 常用标记
    HTML iframe框架
    28-2 logging 日志模块
  • 原文地址:https://www.cnblogs.com/863652104kai/p/11093262.html
Copyright © 2011-2022 走看看