cadeia inesperado no fim da Linha.
Você pode usar fmt.Sprintf
para formatar um texto, de modo que você não tem que juntá-lo com a mão. Eu acho isso mais fácil de ler e escrever, para mim:
fmt.Sprintf("curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://%s/restconf/data/ -v", ip_string)
Parece que você está tentando criar um shell de comando para invocar o Curl. Melhor do que tentando escapar de seus curl
argumentos para o shell, é invocar curl
diretamente. Desta forma, você pode usar Ir para separar os argumentos sem ter de se preocupar com shell citar:
cmd := exec.Command("curl",
"-u", "admin:admin",
"-H", "Accept: application/yang-data+json",
"-s",
fmt.Sprintf("http://%s/restconf/data/", ip_string),
"-v",
)
No entanto, se eu fosse você, eu iria usar https://pkg.go.dev/net/http para fazer o pedido e evitar os/exec
inteiramente. O desempenho e a eficiência vai ser melhor, e a manipulação da resposta e as condições de erro será de forma mais fácil do que fazer isso através de curl
e tentando analisar de saída e a alça de códigos de erro.
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!