意想不到的串的底线。
你可以使用 fmt.Sprintf
格式化的一串这样,你没有缝在一起。 我找到这种更易于阅读和写,自己说:
fmt.Sprintf("curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://%s/restconf/data/ -v", ip_string)
看起来像你在努力创造一个命令要援引的卷曲。 比试图逃避你 curl
参数的外壳,是援引 curl
直接。 这种方式可以使用转到单独的论点,而不必担心壳引用:
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!