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

    模拟ssh远程执行命令

    即使用pycharm运行cmd命令,返回相应的结果

    服务端

    import socket
    import subprocess
    server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    server.bind(('127.0.0.1',8080))
    server.listen(5)
    
    print('start...')
    
    while True:
        conn,client_addr=server.accept()
    
        while True:
            print('from client:',client_addr)
    
            cmd=conn.recv(1024)
            if len(cmd)==0:break
            print('cmd',cmd)
            obj=subprocess.Popen(cmd.decode('utf8'),#输如cmd命令
                                 shell=True,    #通过shell运行
                                 stderr=subprocess.PIPE,    #把错误输出放入管道以便打印
                                 stdout=subprocess.PIPE#将正确结果放入管道以便打印
                                 )
            stdout=obj.stdout.read()
            stderr=obj.stderr.read()
    
            conn.send(stdout)
            conn.send(stderr)#要么正确信息要么错误信息,两个输出只会发送一个
    
        conn.close()
    server.close()
    

    客户端

    import socket
    
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    client.connect(('127.0.0.1', 8000))
    
    while True:
        data = input('please enter your data')
        client.send(data.encode('utf8'))
        data = client.recv(1024).decode('gbk')
    
        print('from server:', data)
    
    client.close()
    

    需要注意的是windows默认编码为gbk,所以在客户端解码的时候需要使用gbk编码进行解码

  • 相关阅读:
    Debian 安装配置(包括kdevelop)
    linux matlab2016 安装
    Qt5.7 无法输入中文问题
    阻塞方法与InterruptedException
    java的null
    原子性、可见性、有序性与指令重排序
    物理机内存模型与java内存模型
    java构造函数总结
    什么时候需要用super
    重载与重写
  • 原文地址:https://www.cnblogs.com/zhoajiahao/p/11098016.html
Copyright © 2011-2022 走看看