Ich habe ein Python 3-Skript, das die Eingabe vom Benutzer akzeptiert, wird diese Eingabe in einen Subprozess geleitet, wo eine Shell erzeugt wurde. Ursprünglich wollte ich diesen Code mit einem Socket verbinden, um mein eigenes, nicht seriöses Remote-Administrations-Tool erstellen zu können, aber das ist für mein Level derzeit zu schwer. Code:Wie Python Subprozess stdout ohne Kommunikation zu lesen
import subprocess
p1 = subprocess.Popen(["/bin/sh"], stderr = subprocess.PIPE, stdin = subprocess.PIPE, stdout = subprocess.PIPE, encoding = "utf-8")
command = input("Command: ")
p1.stdin.write(command)
p1.stdout.read()
Problem: Es wird nichts ausgedruckt. Ich habe endlose Stunden online aus einem Grund gesucht, über mehrere Tage, aber alle scheinen nicht zu arbeiten, und/oder beraten mit communicate() was ist etwas, was ich nicht tun möchte. Wenn ich vorausschaue, ob ich dies mit einem Socket implementieren kann, kann ich den Prozess nicht nach jedem Befehl schließen lassen. Ich habe auch versucht, überall zu flushes, bevor schreiben, zwischen den gelesen, nach die gelesen, so ziemlich überall, was Sie sich vorstellen können. Es sollte einfach genug sein, ohne dass ich tief in das io-Modul oder die Regeln der Pufferung schauen muss (zu spät jetzt). Ich habe seit Tagen mit diesem kämpfen.
Willkommen bei Stack Overflow! Wenn Sie Code-Blöcke veröffentlichen, fügen Sie am Anfang jeder Zeile vier Leerzeichen hinzu, um sie als Code-Snippet anzuzeigen. Weitere Informationen zum Formatieren von Posts finden Sie in der Hilfe [Hilfe zum Bearbeiten] (// stackoverflow.com/editing-help). –