【发布时间】:2017-11-12 16:49:45
【问题描述】:
这是我的代码:
package main
import (
"os/exec"
"log"
"fmt"
)
func main() {
out, err := exec.Command("bash", "-c", "gcloud auth application-default login").Output()
if err != nil {
log.Fatal(err)
}
fmt.Printf("The output is %s\n", out)
}
当我执行这段代码时,它会打开我的浏览器,并带有良好的 url ... 但我想获取网址。
当我输入这个命令时:
gcloud auth application-default login
在我的外壳中我有:
Your browser has been opened to visit:
https://accounts.google.com/o/oauth2/auth?redirect_uri=h***********************************
这就是我想在我的程序中使用 Out 的文本。
知道怎么获得吗?
这里编辑是我测试过但没有成功的 3 个问题
/*
out, err := exec.Command("bash", "-c", "gcloud auth application-default login").CombinedOutput()
if err != nil {
log.Fatal(err)
}
fmt.Printf("The output is %s\n", out)
*/
cmd := exec.Command("bash", "-c", "gcloud auth application-default login")
cmdReader, err := cmd.StderrPipe()
if err != nil {
fmt.Fprintln(os.Stderr, "Error creating StdoutPipe for Cmd", err)
os.Exit(1)
}
scanner := bufio.NewScanner(cmdReader)
go func() {
for scanner.Scan() {
fmt.Printf(" out | %s\n", scanner.Text())
}
}()
out, err := exec.Command("bash", "-c", "gcloud auth application-default login").Output()
if err != nil {
log.Fatal(err)
}
fmt.Printf("The date is %s\n", out)
问候和感谢
【问题讨论】:
-
你的代码是正确的,可能是
gcloud输出到stderr,你可以试试CombinedOutput()而不是Output()吗? -
@jeevatkm 我编辑过的似乎不起作用:/