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)
好像您正在尝试创建一个 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 关注
- 168 浏览
添加回答
举报