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'
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):