Ich habe den folgenden Code, der einen externen Befehl ausführt und zwei Felder auf die Konsole, die auf die Benutzereingabe warten. Eine für den Benutzernamen und andere für das Passwort, und dann habe ich sie manuell hinzufügen.Go - schreiben auf stdin auf externen Befehl
Kann mir jemand einen Hinweis geben, wie man in stdin schreibt, um diese Eingaben von innerhalb des Programms einzugeben?
Der Trick Teil für mich ist, gibt es zwei verschiedene Felder warten auf Eingabe, und ich habe Probleme zu finden, wie man nacheinander zu füllen.
login := exec.Command(cmd, "login")
login.Stdout = os.Stdout
login.Stdin = os.Stdin
login.Stderr = os.Stderr
err := login.Run()
if err != nil {
fmt.Fprintln(os.Stderr, err)
}
LÖSUNG:
login := exec.Command(cmd, "login)
var b bytes.Buffer
b.Write([]byte(username + "\n" + pwd + "\n"))
login.Stdout = os.Stdout
login.Stdin = &b
login.Stderr = os.Stderr
Sie können vielleicht Ihre Standardeingabe mit dem Unterprozess 'stdin mit einer Schleife lesen, die von Ihrer liest und in den Unterprozess schreibt. –