Python. Leiten Sie stdout an einen Socket um

8

Ich führe mein Skript auf "A" Computer, dann verbinde ich mit "A" Computer von "B" Computer über mein Skript. Ich sende meine Nachricht an Computer "A" und mein Skript führt es mit 'exec ()' Anweisung aus.

Ich möchte das Ergebnis der Ausführung meiner Nachricht auf dem Computer "A" sehen, durch den Anschluss auf dem Computer "B". Ich versuche, sys.stdout = socket_response zu ändern, habe aber einen Fehler: "Socket-Objekt hat kein Attribut write ()"

Also, wie kann ich die Standart-Ausgabe (für print oder exec ()) von "A" Computer zu "B" Computer durch Socket-Verbindung umleiten. "

Es wird eine Art 'Python-Interpreter' in mein Skript sein.

SORRY, ich kann meine eigene Frage nicht ohne RUF beantworten

Danke an alle!

Ich benutze einen einfachen Weg, der mir @Torxed empfohlen hat. Hier mein Affe-Code (es ist nur ein Beispiel, nicht mein richtiges Skript)

%Vor%

Ich bin mit dem Skript mit Putty verbunden und sende "print 'abc'" und dann erhielt ich die Antwort 'abc'

    
gek0n 29.01.2014, 11:48
quelle

2 Antworten

3

Es gibt makefile Funktion in der Python Socket-Klasse:

  

socket. makefile (mode = 'r', Pufferung = None, *, encoding = None,   Fehler = Keine, Newline = Keine)

     

Gibt ein Dateiobjekt zurück, das dem Socket zugeordnet ist. Das genaue zurückgegeben   Typ hängt von den Argumenten ab, die zu Makefile () gegeben werden. Diese Argumente sind   interpretiert wie die eingebaute open () Funktion.

     

Das Schließen des Dateiobjekts schließt den Socket nur, wenn es keine gibt   verbleibende Referenzen auf den Socket. Der Socket muss blockiert sein   Modus; Es kann eine Zeitüberschreitung haben, aber der interne Puffer des Dateiobjekts kann   endet in einem inkonsistenten Zustand, wenn eine Zeitüberschreitung auftritt.

Wie man es benutzt, können Sie in Mark Lutz Buch lesen ( Kapitel Sockets wie Dateien und Streams aussehen )

Beispiel aus Buch (Idee ist einfach: Machen Sie ein Dateiobjekt aus Socket mit socket.makefile und verknüpfen Sie sys.stdout damit):

%Vor%     
ndpu 29.01.2014, 12:01
quelle
1

Serverseite:

%Vor%

Dies setzt Python3 voraus.

Wenn niemand anders eine bessere Möglichkeit hat, die Ausgabe von einem Prozess an einen Socket umzuleiten, ist dies eine Lösung, mit der Sie arbeiten könnten.

    
Torxed 29.01.2014 11:57
quelle

Tags und Links