zoukankan      html  css  js  c++  java
  • Python 简单的远程执行命令

    client端执行命令,server端返回命令结果

    # server 端
    import socket, subprocess
    
    sk = socket.socket()
    address=('127.0.0.1', 8000)
    sk.bind(address)
    sk.listen(3)
    print('waiting....')
    
    while 1:
        conn, addr = sk.accept()
        print(addr)
        while 1:
            try:
                data = conn.recv(1024)
            except Exception:
                break
            if not data: break
            print('.........', str(data, 'utf8'))
    
            obj = subprocess.Popen(data.decode('utf8'), shell=True, stdout=subprocess.PIPE)
            cmd_result = obj.stdout.read()
            result_len = bytes(str(len(cmd_result)), 'utf8')
            print('>>>>>>', result_len)
            conn.sendall(result_len)
            conn.recv(1024)              # 预防粘包现象
            conn.sendall(cmd_result)
    
    sk.close()
    
    # client 端
    import socket
    
    sk = socket.socket()
    print(sk)
    
    address = ('127.0.0.1', 8000)
    sk.connect(address)
    
    while True:
        inp = input('>>>')
        if inp == 'exit':
            break
        sk.send(bytes(inp, 'utf8'))
        result_len = int(str(sk.recv(1024), 'utf8'))
        sk.sendall(bytes('ok', 'utf8'))
        print(result_len)
        data = bytes()
        while len(data) != result_len:
            recv = sk.recv(1024)
            data += recv
        print(str(data, 'gbk'))
    sk.close()
    
    
  • 相关阅读:
    windows2016优化
    oracle什么时候需要commit
    Mysql的锁表,锁行记录
    git add
    linux系统优化
    解决rsyslog启动问题
    HAProxy启用日志功能
    nc命令获取远端端口状态
    将pip源更换到国内镜像
    Centos7.6下安装Python3.7
  • 原文地址:https://www.cnblogs.com/klvchen/p/9249629.html
Copyright © 2011-2022 走看看