首頁 >後端開發 >Golang >如何在 Go 中透過 Stdin 將使用者憑證輸入到外部程式中?

如何在 Go 中透過 Stdin 將使用者憑證輸入到外部程式中?

Patricia Arquette
Patricia Arquette原創
2024-11-02 01:28:30932瀏覽

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

透過stdin 將使用者憑證輸入外部程式

考慮以下場景:您希望執行外部命令並從內部提供使用者憑證去編程吧。此命令提示在單獨的欄位中輸入使用者名稱和密碼。確定如何使用 stdin 順序填充這些欄位可能是一個挑戰。

解決方案:利用bytes.Buffer

要解決此問題,請利用bytes.Buffer 類型,它可以建立用於寫入和讀取位元組資料的緩衝區。請依照以下步驟操作:

  1. 建立一個位元組。緩衝區並寫入使用者名稱和密碼,以換行符號分隔。
  2. 將緩衝區分配給指令的 Stdin 欄位。
  3. 照常執行指令,將其 stdout 和 stderr 重新導向到您的程式。

範例程式碼:

<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>

這種方法利用了 stdin 讀取字元直到遇到字元的事實換行符。透過將緩衝區提供給標準輸入,該命令將按順序讀取憑證,而不會遇到任何歧義。

以上是如何在 Go 中透過 Stdin 將使用者憑證輸入到外部程式中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn