這裏是我的代碼:如何在golang中獲得gcloud命令的結果?
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)
}
當我exec的這段代碼是我打開我的瀏覽器與良好的網址... 但我想獲得的URL。
當我鍵入此命令:
gcloud auth application-default login
在我的殼,我有:
Your browser has been opened to visit:
https://accounts.google.com/o/oauth2/auth?redirect_uri=h***********************************
這就是我想獲得在我的節目中出來的文字。
任何想法如何得到它?這裏
編輯是3個thigns,我已經沒有sucess
/*
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
@jeevatkm我編輯似乎不工作:/ – user462794