通过 stdin 将用户凭据输入到外部程序
考虑以下场景:您希望执行外部命令并从内部提供用户凭据去编程吧。该命令提示在单独的字段中输入用户名和密码。确定如何使用 stdin 顺序填充这些字段可能是一个挑战。
解决方案:利用 bytes.Buffer
要解决此问题,请利用 bytes.Buffer 类型,它可以创建用于写入和读取字节数据的缓冲区。请按照以下步骤操作:
示例代码:
<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中文网其他相关文章!