satırın sonunda beklenmeyen dize.
Kullanabilirsiniz fmt.Sprintf
bir dizeyi elle birbirine dikmeniz gerekmeyecek şekilde biçimlendirmek için. Bunu kendim okumayı ve yazmayı daha kolay buluyorum:
fmt.Sprintf("curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://%s/restconf/data/ -v", ip_string)
Kıvrılmayı çağırmak için bir kabuk komutu oluşturmaya çalışıyormuşsunuz gibi görünüyor. Senden kaçmaya çalışmaktan iyidir. curl
kabuk için argümanlar, çağırmaktır curl
doğruca. Kalmadan kabuk endişelenecek bağımsız ayrı Gidin kullanabilirsiniz bu şekilde alıntı:
cmd := exec.Command("curl",
"-u", "admin:admin",
"-H", "Accept: application/yang-data+json",
"-s",
fmt.Sprintf("http://%s/restconf/data/", ip_string),
"-v",
)
Yine de senin yerinde olsam kullanırdım. https://pkg.gitmek.isteği yapmak ve ortadan kaldırmak için dev/net/http os/exec
tamamen. Performans ve verimlilik daha iyi olacak ve yanıtın ve herhangi bir hata koşulunun ele alınması bunu yapmaktan çok daha kolay olacaktır curl
ve çıktıyı ayrıştırmaya ve hata kodlarını işlemeye çalışıyorum.
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!