inattendu de la chaîne à la fin de la Ligne.
Vous pouvez utiliser fmt.Sprintf
pour formater une chaîne de caractères de sorte que vous n'avez pas à les coudre ensemble à la main. Je trouve cela plus facile à lire et à écrire, à moi-même:
fmt.Sprintf("curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://%s/restconf/data/ -v", ip_string)
Semble que vous essayez de créer un shell de commande pour appeler Curl. Mieux que d'essayer de s'échapper de votre curl
arguments en faveur de la coquille, est d'invoquer curl
directement. De cette façon, vous pouvez utiliser Aller pour séparer les arguments sans avoir à vous soucier de la coquille de citer:
cmd := exec.Command("curl",
"-u", "admin:admin",
"-H", "Accept: application/yang-data+json",
"-s",
fmt.Sprintf("http://%s/restconf/data/", ip_string),
"-v",
)
Cependant, si j'étais vous, je ne l'utiliserais https://pkg.go.dev/net/http pour faire la demande et d'éviter os/exec
entièrement. Les performances et l'efficacité sera meilleure, et la manipulation de la réponse et les conditions d'erreur sera manière plus facile que de le faire que par le biais de curl
et en essayant d'analyser de sortie et de gérer les codes d'erreur.
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!