neočekávaný řetězec na konci Řádku.
Můžete použít fmt.Sprintf
formátovat řetězec, takže nemusíte stitch je dohromady ručně. Připadá mi to jednodušší číst a psát, sám:
fmt.Sprintf("curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://%s/restconf/data/ -v", ip_string)
Vypadá to, že jste se snaží vytvořit shellový příkaz pro vyvolání Curl. Lepší, než se snaží uniknout své curl
argumenty pro shell, je vyvolat curl
přímo. Tímto způsobem můžete použít Jít do samostatné argumenty, aniž by se museli starat o shell cituji:
cmd := exec.Command("curl",
"-u", "admin:admin",
"-H", "Accept: application/yang-data+json",
"-s",
fmt.Sprintf("http://%s/restconf/data/", ip_string),
"-v",
)
Nicméně, pokud bych byl tebou, tak bych použití https://pkg.go.dev/net/http podat žádost a zamezují os/exec
úplně. Výkon a účinnost bude lepší, a manipulace odpověď a případné chybové stavy bude cesta jednodušší, než dělat to přes curl
a snaží se analyzovat výstup a zpracovávat chybové kódy.
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!