неожиданная строка в конце строки.
Вы можете использовать fmt.Sprintf
чтобы отформатировать строку так, чтобы вам не пришлось сшивать ее вручную. Мне самому это легче читать и писать:
fmt.Sprintf("curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://%s/restconf/data/ -v", ip_string)
Похоже, вы пытаетесь создать команду оболочки для вызова Curl. Лучше, чем пытаться сбежать от твоего curl
аргументы для оболочки, заключается в вызове curl
непосредственно. Таким образом, вы можете использовать Go для разделения аргументов, не беспокоясь о цитировании оболочки:
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!