您的位置 首页 golang

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

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读入数据哈。


文章来源:智云一二三科技

文章标题:golang调用外部命令,并且通过stdin传数据

文章地址:https://www.zhihuclub.com/7451.shtml

关于作者: 智云科技

热门文章

网站地图