inesperado cadena al final de la Línea.
Puede utilizar fmt.Sprintf
para dar formato a una cadena de modo que usted no tiene que puntada es, junto con la mano. Esto me parece más fácil de leer y escribir, a mí mismo:
fmt.Sprintf("curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://%s/restconf/data/ -v", ip_string)
Parece que usted está tratando de crear un shell de comandos para invocar Curl. Mejor que tratando de escapar de su curl
argumentos para el shell, es invocar curl
directamente. De esta manera usted puede utilizar Go para separar los argumentos sin tener que preocuparse de shell de citar:
cmd := exec.Command("curl",
"-u", "admin:admin",
"-H", "Accept: application/yang-data+json",
"-s",
fmt.Sprintf("http://%s/restconf/data/", ip_string),
"-v",
)
Sin embargo, si yo fuera usted, me gustaría usar https://pkg.go.dev/net/http para realizar la solicitud y obviar os/exec
totalmente. El rendimiento y la eficiencia será mejor, y el manejo de la respuesta y las condiciones de error será la manera más fácil de hacer que a través de curl
y tratando de analizar de salida y manejar los códigos de error.
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!