我正在编写一个Golang应用程序,它将运行一些bash脚本。在其中一个命令中,脚本将以sudo身份运行,并且需要我手动输入密码。
我可以知道如何自动发送密码吗?
cmd := exec.Command("/bin/sh", "-c", "knife bootstrap xxx.xxx.xxx.xxx -x user_name --sudo -i ~/.ssh/id_rsa.pub --node-name node_name -P password -c ~/chef-repo/.chef/config.rb")
stdin, err := cmd.StdinPipe()
if err != nil {
log.Panic(err)
}
go func() {
defer stdin.Close()
io.WriteString(stdin, "password")
}()
我目前还停留在刀具引导程序将在厨师客户端提示以下密码的步骤。
user_name@xxx.xxx.xxx.xxx's password:
我无法使用Expect捕获此字符串并提供密码,这似乎与将在终端中输出的常规字符串不同。
答案 0 :(得分:-1)
我认为您需要使用sudo -S
。
回显密码|须藤-S vim a.txt