Python. Перенаправить стандартный вывод в сокет
Я запускаю свой сценарий на компьютере «A», затем подключаюсь к компьютеру «A» с компьютера «B» через мой сценарий. Я отправляю свое сообщение на компьютер «А», и мой скрипт запускает его с помощью инструкции «exec ()».
Я хочу видеть результат выполнения моего сообщения на компьютере "A", через сокет на компьютере "B". Я пытаюсь изменитьsys.stdout = socket_response
но есть ошибка: «У объекта сокета нет атрибута write ()»
Итак, как я могу перенаправить стандартный вывод (для печати или exec ()) с компьютера «A» на компьютер «B» через сокет подключения ».
Это будет своего рода «интерпретатор Python» в моем сценарии.
Извините, я не могу ответить на свой вопрос без репутации
Спасибо всем!
Я использую простой способ, который мне посоветовал @Torxed. Вот мой обезьян-код (это всего лишь пример, а не мой настоящий скрипт)
#-*-coding:utf-8-*-
import socket
import sys
class stdout_():
def __init__(self, sock_resp):
self.sock_resp = sock_resp
def write(self, mes):
self.sock_resp.send(mes)
MY_IP = 'localhost'
MY_PORT = 31337
srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("Start server")
old_out = sys.stdout
srv.bind((MY_IP, MY_PORT))
srv.listen(0)
sock_resp, addr_resp = srv.accept()
new_out = stdout_(sock_resp)
sys.stdout = new_out
#sys.stdout = sock_resp ### sock_object has no attribute 'write'
while 1:
try:
a = sock_resp.recv(1024)
exec(a)
except socket.timeout:
#print('server timeout!!' + '\n')
continue
Я подключился к сценарию с Putty и отправил «print 'abc'», а затем получил ответ «abc»