Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gebe ich Benutzeranmeldeinformationen über Stdin in Go in ein externes Programm ein?

Wie gebe ich Benutzeranmeldeinformationen über Stdin in Go in ein externes Programm ein?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-02 01:28:30815Durchsuche

How to Input User Credentials into an External Program via Stdin in Go?

Eingabe von Benutzeranmeldeinformationen in ein externes Programm über stdin

Stellen Sie sich das Szenario vor, in dem Sie einen externen Befehl ausführen und Benutzeranmeldeinformationen aus einem heraus bereitstellen möchten Gehen Sie zum Programm. Der Befehl fordert zur Eingabe von Benutzername und Passwort in separaten Feldern auf. Zu bestimmen, wie diese Felder nacheinander mit stdin gefüllt werden, kann eine Herausforderung sein.

Lösung: Verwendung eines bytes.Buffer

Um dieses Problem zu beheben, verwenden Sie den Typ bytes.Buffer. Dies ermöglicht die Erstellung eines Puffers zum Schreiben und Lesen von Bytedaten. Befolgen Sie diese Schritte:

  1. Erstellen Sie einen bytes.Buffer und schreiben Sie den Benutzernamen und das Passwort, getrennt durch Zeilenumbrüche.
  2. Weisen Sie den Puffer dem Stdin-Feld des Befehls zu.
  3. Führen Sie den Befehl wie gewohnt aus und leiten Sie stdout und stderr an Ihr Programm weiter.

Beispielcode:

<code class="go">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

err := login.Run()
if err != nil {
    fmt.Fprintln(os.Stderr, err)
}</code>

Dieser Ansatz nutzt die Tatsache aus, dass stdin Zeichen liest, bis sie auf sie stoßen eine neue Zeile. Durch die Zuführung des Puffers zu stdin liest der Befehl die Anmeldeinformationen nacheinander, ohne dass Unklarheiten auftreten.

Das obige ist der detaillierte Inhalt vonWie gebe ich Benutzeranmeldeinformationen über Stdin in Go in ein externes Programm ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn