php执行go命令,golang调用外部命令,并且通过stdin传数据

该文章介绍了如何在Golang中使用`StdinPipe`调用外部命令并传递敏感信息,如密码。示例展示了如何安全地向`docker login`命令传递密码,适用于需要与支持stdin输入的命令交互的场景。
摘要由CSDN通过智能技术生成

golang调用外部命令,并且通过stdin传数据的例子

使用场景:

当我们需要调用一个外部命令,然后给外部命令传参数,常用方便的做法是通过命令行传参数,但是有些时候数据太长,或者基于安全考虑,比如传密码,等不方便使用参数时,我们可以通过stdin传递。

下面一个docker login传递密码的例子:

func dockerLogin(registry string, username string, token string) error {

cmdarray := []string{"-c", fmt.Sprintf("docker login %s -u %s --password-stdin", registry, username)}

cmd := exec.Command("bash", cmdarray...)

stdin, err := cmd.StdinPipe()

if err != nil {

return err

}

go func() {

defer stdin.Close()

io.WriteString(stdin, token+"\n")

}()

_, err = cmd.CombinedOutput()

if err != nil {

return err

}

return nil

}

当然这都需要外部命令本身支持从stdin读入数据哈。

有疑问加站长微信联系(非本文作者)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值