1 回答
TA貢獻1784條經驗 獲得超2個贊
Line 末尾的意外字符串。
您可以使用fmt.Sprintf格式化字符串,這樣您就不必手動將其縫合在一起。我自己覺得這更容易閱讀和寫作:
fmt.Sprintf("curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://%s/restconf/data/ -v", ip_string)
好像您正在嘗試創(chuàng)建一個 shell 命令來調用 Curl。比試圖逃避curlshell 的參數更好的是直接調用curl。這樣,您可以使用 Go 分隔參數,而不必擔心 shell 引用:
cmd := exec.Command("curl",
"-u", "admin:admin",
"-H", "Accept: application/yang-data+json",
"-s",
fmt.Sprintf("http://%s/restconf/data/", ip_string),
"-v",
)
但是,如果我是你,我會使用https://pkg.go.dev/net/http提出請求并os/exec完全避免。性能和效率會更好,處理響應和任何錯誤條件將比通過curl嘗試解析輸出和處理錯誤代碼更容易。
req, err := http.NewRequest("GET", fmt.Sprintf("http://%s", source_ip), nil)
// handle err
req.Header.Add("Accept", "application/yang-data+json")
req.SetBasicAuth("admin","admin")
resp, err := client.Do(req)
// handle err!
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
// handle err!
- 1 回答
- 0 關注
- 242 瀏覽
添加回答
舉報
