我在“A”计算机上运行脚本,然后通过脚本从“B”计算机连接到“A”计算机。我将消息发送到计算机“A”,脚本使用“exec()”指令运行它。
我想在“A”计算机上,通过“B”计算机上的套接字,查看我的消息的执行结果。
我试图更改sys.stdout = socket_response,但出现错误:“Socket对象没有属性write()”
所以,如何通过套接字连接将standart输出(用于print或exec())从“A”计算机重定向到“B”计算机
我的脚本中会有某种“python解释器”。
对不起,没有名声我回答不了自己的问题
谢谢大家!
我用一种简单的方法,它劝告我“扭转”。这里是我的猴子代码(这只是一个例子,不是我真正的脚本)#-*-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
我用油灰连接到脚本并发送“print‘abc’”,然后收到“abc”