zoukankan      html  css  js  c++  java
  • 模拟ssh发送cmd指令

    模拟ssh发送cmd指令

    服务端

    import socket
    import subprocess
    
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    server.bind(('127.0.0.1', 8087))
    server.listen(5)
    print('wait...')
    
    while True:
        conn, client_addr = server.accept()
        print(client_addr)
        
        while True:
            try:
                cmd = conn.recv(1024)
                print(cmd)
                
                pipeline = subprocess.Popen(cmd.decode('utf-8'),
                                           shell=True,
                                           stderr=subprocess.PIPE, # 报错信息
                                           stdout=subprocess.PIPE) # 返回信息
                # 获取两个信息
                stuout = pipeline.stdout.read()
                stderr = pipeline.stderr.read()
                
                # 也可以写成,if和else,不过这两个一般只会出现一个,所以这样写也没问题
                conn.send(stuout+stderr)
            except ConnectionResetError:
                break
    

    客户端

    import socket
    
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client.connect(('127.0.0.1', 8087))
    
    while True:
        # 这里就可以输入一个cmd中的命令了,如ipconfig, dir等,但有一些输入过长的命令无法获取
        msg = input('please your enter msg').strip()
        client.send(msg.encode('utf-8'))
        
        cmd = client.recv(1024)
        print(cmd.decode("gbk"))
    
  • 相关阅读:
    小小c#算法题
    .net中值类型、引用类型理解的c#代码示例
    小小c#算法题
    小小c#算法题
    小小c#算法题
    小小c#算法题
    python 正则表达式(一)
    python string 文本常量和模版
    centos6安装redis
    sqoop命令总结
  • 原文地址:https://www.cnblogs.com/lucky75/p/11098922.html
Copyright © 2011-2022 走看看