imprevisti stringa alla fine della Riga.
È possibile utilizzare fmt.Sprintf
per formattare una stringa in modo che non dovete cucire insieme da un lato. Trovo che questo sia più facile da leggere e scrivere, a me stesso:
fmt.Sprintf("curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://%s/restconf/data/ -v", ip_string)
Sembra come se si sta cercando di creare una shell di comando per richiamare Curl. Meglio che cercare di fuggire curl
argomenti per la shell, è quello di richiamare curl
direttamente. In questo modo è possibile utilizzare Andare a separare gli argomenti, senza doversi preoccupare di shell citando:
cmd := exec.Command("curl",
"-u", "admin:admin",
"-H", "Accept: application/yang-data+json",
"-s",
fmt.Sprintf("http://%s/restconf/data/", ip_string),
"-v",
)
Tuttavia, se fossi in te, mi piacerebbe usare https://pkg.go.dev/net/http per effettuare la richiesta e di ovviare os/exec
interamente. Le prestazioni e l'efficienza sarà migliore, e gestisce la risposta e le eventuali condizioni di errore sarà il modo più facile di fare che attraverso curl
e il tentativo di analisi di uscita e di gestire i codici di errore.
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!