neașteptat șir la sfârșitul de Linie.
Puteți utiliza fmt.Sprintf
a format un șir de caractere, astfel încât să nu trebuie să cusatura împreună de mână. Am găsi acest lucru mai ușor să scrie și să citească, eu:
fmt.Sprintf("curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://%s/restconf/data/ -v", ip_string)
Se pare ca esti încercarea de a crea o coajă de comandă pentru a invoca Curl. Mai bine decât încercarea de a scăpa de curl
argumente pentru shell, este de a invoca curl
direct. În acest fel puteți utiliza Du-te pentru a separa argumentele fără a fi nevoie să vă faceți griji despre shell referire la:
cmd := exec.Command("curl",
"-u", "admin:admin",
"-H", "Accept: application/yang-data+json",
"-s",
fmt.Sprintf("http://%s/restconf/data/", ip_string),
"-v",
)
Cu toate acestea, dacă aș fi fost tu, aș folosi https://pkg.go.dev/net/http pentru a face o cerere și de a evita os/exec
în întregime. Performanța și eficiența va fi mai bine, și de manipulare răspuns și orice condiții de eroare va fi drumul mai ușor decât a face asta prin curl
și încercarea de a analiza ieșire și să se ocupe de coduri de eroare.
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!