nieoczekiwany ciąg znaków na końcu wiersza.
Można użyć fmt.Sprintf
aby sformatować ciąg tak, aby nie trzeba było zszywać ręcznie. Mi samemu to łatwiej czytać i pisać:
fmt.Sprintf("curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://%s/restconf/data/ -v", ip_string)
Wygląda na to, próbujesz stworzyć polecenie powłoki, do połączeń Curl. Lepiej, niż próbować uciec od twojego curl
argumenty dla powłoki, polega na wywołaniu curl
bezpośrednio. W ten sposób, można użyć Go do podziału argumentów, nie martwiąc się o cytowaniu powłoki:
cmd := exec.Command("curl",
"-u", "admin:admin",
"-H", "Accept: application/yang-data+json",
"-s",
fmt.Sprintf("http://%s/restconf/data/", ip_string),
"-v",
)
Jednak, gdybym był na twoim miejscu, ja bym użył https://pkg.go.dev/net/http aby złożyć wniosek i wyeliminować os/exec
w pełni. Wydajność i efektywność będzie wyższa, a przetwarzanie odpowiedzi i w każdych warunkach błędów będzie o wiele łatwiejsze, niż wykonanie tego za pomocą curl
i próbuje analizować dane wyjściowe i przetwarzać kody błędów.
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!