首页 >后端开发 >Golang >如何在 Go 中自动执行外部命令输入:绕过'登录”等命令的用户交互的指南

如何在 Go 中自动执行外部命令输入:绕过'登录”等命令的用户交互的指南

Linda Hamilton
Linda Hamilton原创
2024-10-31 22:11:29525浏览

How to Automate External Command Input in Go:  A Guide to Bypassing User Interaction for Commands Like

自动化 Go 的外部命令输入

在 Go 中,执行外部命令并管理其输入和输出是一项常见任务。但是,在处理提示用户输入的命令(例如“登录”)时,以编程方式自动执行这些输入可能具有挑战性。

解决此问题的一种方法是直接写入命令的标准输入(stdin) )使用字节缓冲区。让我们深入研究提供的解决方案:

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

在此代码中,我们创建一个名为 b 的 bytes.Buffer 并将用户名和密码与换行符连接起来。然后,我们将 b 分配给登录命令的 Stdin 字段,有效地将缓冲区连接到命令的输入流。

当命令执行时,它将从 b 读取字符,直到遇到换行符,将其解释为用户名。然后它将读取直到下一个换行符,并将其视为密码。通过以这种方式手动写入缓冲区,我们绕过了用户交互的需要,并以编程方式提供必要的输入。

请记住,stdin 是一个字符缓冲区,命令通常会读取输入,直到遇到换行符。该技术允许您在将输入提供给外部命令之前对其进行缓冲和排序,从而自动执行输入过程,而无需用户手动干预。

以上是如何在 Go 中自动执行外部命令输入:绕过'登录”等命令的用户交互的指南的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn