Python. Umleiten von stdout an eine Steckdose

Ich mein Skript auf "Ein" computer, dann habe ich eine Verbindung zu "Einer" computer aus "B" - computer über mein Skript. Ich schicke meine Nachricht auf computer "A" und mein script laufen Sie mit 'exec ()' - Anweisung.

Möchte ich sehen, das Ergebnis der Ausführung meiner Nachricht auf "Ein" computer, über socket auf "B" - computer.
Ich versuche es zu ändern sys.stdout = socket_response haben aber einen Fehler: "Socket-Objekt hat kein Attribut write()"

So, wie kann ich die Umleitung standart-Ausgabe (für print-oder exec()) aus "Ein" computer "B" - computer über socket-Verbindung."

Wird es eine Art "python interpreter", in meinem Skript.

SORRY, ICH KANN KEINE ANTWORT AUF MEINE EIGENE FRAGE, OHNE RUF

Danke an alle!

Ich benutze einfache Möglichkeit, die empfahl mir @Torxed . Hier meine monkey-code (es ist nur ein Beispiel, nicht mein richtiges Drehbuch)

    #-*-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

Ich mit script mit Putty und senden "print 'abc'" und dann erhielt ich Antwort 'abc'

  • Wie über Sie schreiben eine wrapper-Klasse, die können Sie Ihre sys.stdoutstatt, die eine Funktion namens write() die im Grunde nur tun: self.socket.send(data) und alles ist gut? 🙂
  • Ja, dachte ich, aber vielleicht gibt es mehr standart so?
  • Außerdem würde ich wahrscheinlich überlegen, mit subprocess.Popen() statt exec() weil Sie in der Lage zu verarbeiten Eingabe/Ausgabe von Befehlen wesentlich effizienter. Ich kenne keine standard-Weg, lässt hoffen, einige guru weiß es 🙂
  • das ist so, wie ich es tun würde. Möchten Sie vielleicht, um Ihren Kommentar in eine Antwort.
  • Ja, hoffentlich... Aber ich muss ein bisschen erklären, situation. Ich habe eine "my_script", die sollte funktionieren dauerhaft. Und das kann ich nicht immer in der Nähe. Aber ich habe ändern müssen Variablen in dem Skript, ohne zu stoppen. Und ich dachte, der Weg war sehr einfach, aber ich war falsch...
InformationsquelleAutor gek0n | 2014-01-29
Schreibe einen Kommentar