Python сокеты и команды - PullRequest
       4

Python сокеты и команды

0 голосов
/ 04 октября 2018

Я пытаюсь отправлять консольные команды с одного компьютера на другой, используя сокеты Python.Я хочу, чтобы сервер отправил обратно результаты команды клиенту.Если клиент вводит «ls», я хочу, чтобы сервер отправил обратно результаты выполнения этой команды.Вместо ожидаемого результата сервер просто говорит «действие выполнено: ls».Как это исправить, чтобы сервер выполнял ожидаемые команды и возвращал результат?

Сервер:

import socket
from subprocess import call


def main():
     host = '127.0.0.1'
    port = 5000

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind((host, port))

    s.listen(1)
    c, addr = s.accept()
    print('Connection established: ' + str(addr))

    while True:
        try:
            data = c.recv(1024).decode('utf-8')
            print('sending data: ' + data)
            c.send(data.encode('utf-8'))
            if data == 'q':
                break
        except NameError:
            error = 'Command does not exist'
            c.send(error.encode('utf-8'))
            continue
        except SyntaxError:
            error = 'Command does not exist'
            c.send(error.encode('utf-8'))
            continue
    c.close()

Клиент:

import socket
from subprocess import call


def main():
    host = '127.0.0.1'
    port = 5000

    s = socket.socket()
    s.connect((host, port))
    message = str(input('> '))
    while message != 'q':
        try:
            s.send(message.encode('utf-8'))
            data = s.recv(1024).decode('utf-8')
            print('Action completed: %s' % data)
            message = str(input('> '))
        except NameError:
            print("Command not recognized.")
            continue
        except SyntaxError:
            print("Command not recognized")
            continue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...