Python отправляет команду через сокет

У меня небольшие проблемы. Я хочу создать простую программу, которая подключается к серверу и выполняет команду с помощью подпроцесса, а затем возвращает результат клиенту. Это просто, но я не могу заставить его работать. Прямо сейчас у меня есть: Я хочу создать простую программу, которая подключается к серверу и выполняет команду с помощью подпроцесса, а затем возвращает результат клиенту. Это просто, но я не могу понять ...

У меня небольшие проблемы. Я хочу создать простую программу, которая подключается к серверу и выполняет команду с помощью подпроцесса, а затем возвращает результат клиенту. Это просто, но я не могу заставить его работать. Прямо сейчас у меня есть: Я хочу создать простую программу, которая подключается к серверу и выполняет команду с помощью подпроцесса, а затем возвращает результат клиенту. Это просто, но я не могу понять ...

У меня небольшие проблемы. Я хочу создать простую программу, которая подключается к серверу и выполняет команду с помощью подпроцесса, а затем возвращает результат клиенту. Это просто, но я не могу заставить его работать. Прямо сейчас у меня есть: клиент:


import sys, socket, subprocess
conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = sys.argv[1]
port = int(sys.argv[2])
socksize = 1024
conn.connect((host, port))
while True:
    shell = raw_input("$ ")
    conn.send(shell)
    data = conn.recv(socksize)
    #msglen = len(data)
    output = data
    iotype = subprocess.PIPE
    cmd = ['/bin/sh', '-c', shell]
    proc = subprocess.Popen(cmd, stdout=iotype).wait()
    stdout,stderr = proc.communicate()
    conn.send(stdout)
    print(output)
    if proc.returncode != 0:
        print("Error")

сервер:


import sys, socket, subprocess
host = ''               
port = 50106
socksize = 1024

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
print("Server started on port: %s" %port)
s.listen(1)
print("Now listening...\n")
conn, addr = s.accept()
while True:
    print 'New connection from %s:%d' % (addr[0], addr[1])
    data = conn.recv(socksize)
    cmd = ['/bin/sh', '-c', data]
    proc = subprocess.Popen(cmd, stdout=subprocess.PIPE).wait()
    stdout,stderr = cmd.communicate()
    if not data:
        break
    elif data == 'killsrv':
        sys.exit()
5
задан AustinM 13 February 2011 в 21:40
поделиться