首页  >  文章  >  后端开发  >  如何在 Go 中通过 Stdin 将用户凭证输入到外部程序中?

如何在 Go 中通过 Stdin 将用户凭证输入到外部程序中?

Patricia Arquette
Patricia Arquette原创
2024-11-02 01:28:30815浏览

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