soket实现远程执行系统命令

来源:互联网 发布:usb网络电视接收棒 编辑:程序博客网 时间:2024/06/12 21:58

server

# -*- coding: utf-8 -*-# @author: Gogh# date: 2017/12/20 22:12# @Email:361910002@qq.comimport socket,subprocessip_port = ('127.0.0.1', 8000)sk = socket.socket()sk.bind(ip_port)sk.listen(3)while True:    conn, addr = sk.accept()    while True:        try:            data = conn.recv(1024)            print("welcome conne>>>>>", addr)        except Exception as e:            break        print(str(data, 'utf8'))        if not data:            conn.close()            conn, addr = sk.accept()            continue        obj = subprocess.Popen(str(data, 'utf8'), shell=True, stdout=subprocess.PIPE)        cmd_result = obj.stdout.read()        result_len = bytes(str(len(cmd_result)),'utf8')        conn.sendall(result_len)        conn.sendall(cmd_result)sk.close()


client

# -*- coding: utf-8 -*-# @author: Gogh# date: 2017/12/20 22:12# @Email:361910002@qq.comimport socketip_port = ('127.0.0.1', 8000)sk = socket.socket()sk.connect(ip_port)while True:    inp = input('>>>>>')    if inp == 'exit':        break    sk.send(bytes(inp, 'utf8'))    result_len = int(str(sk.recv(1024), 'utf8'))    # print(result_len)    data = bytes()    while len(data) != result_len:        recv = sk.recv(1024)        data += recv    print(str(data, 'gbk'))    # data = sk.recv(1024)    # print(str(data, 'gbk'))sk.close()