Ako pridať reťazec s citáty a lomky v golang

0

Otázka

Budem zdieľať príklad

Chcem riadok nižšie v golang reťazec curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://<ip>/restconf/data/ -v

kód napísal:

cmd := "curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://" + ip_string + "/restconf/data/ -v"

err: neočakávané reťazec na koniec Riadku.

go
2021-11-23 16:07:26
1

Najlepšiu odpoveď

1

neočakávané reťazec na koniec Riadku.

Môžete použiť fmt.Sprintf ak chcete formátovať reťazec tak, že nemusíte steh je spolu ručne. Zdá sa mi to jednoduchšie čítať a písať, sám:

fmt.Sprintf("curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://%s/restconf/data/ -v", ip_string)

Zdá sa, ako ste sa snaží vytvoriť príkaz shell-u na vyvolanie Curl. Lepšie, ako sa snaží uniknúť vašej curl argumenty pre shell, je na vyvolanie curl priamo. Týmto spôsobom môžete použiť Prejdite na samostatné argumenty, bez toho aby sa museli starať o shell cituje:

cmd := exec.Command("curl", 
   "-u", "admin:admin",
   "-H", "Accept: application/yang-data+json",  
   "-s", 
   fmt.Sprintf("http://%s/restconf/data/", ip_string), 
   "-v",
)

Avšak, keď som si bol, ja by som používať https://pkg.go.dev/net/http aby sa žiadosti a vyhnúť os/exec úplne. Výkon a účinnosť, bude lepšie, a manipulácie reakcie a akékoľvek chyby, podmienky budú spôsobom jednoduchšie, než to, že cez curl a snaží sa analyzovať výstup a rukoväť 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!
2021-11-23 16:26:50

Vďaka za odpoveď. Ale čo vlajky -u -s a -v tom, ako patrí, že
Pulkit Kundra

{"error":"parse \"-s http://<ip>/restconf/data/ -v\": prvý úsek cesty v URL nemôže obsahovať hrubého čreva","handler":"POST /collect","jobID":"Collect-11-24-2021_051320","level":"error","method":"initiateConfdCollection","msg":"Getrunningconfig: Nepodarilo sa vytvoriť žiadosť: parse \"-s http://<ip>/restconf/data/ -v\": prvý úsek cesty v URL nemôže obsahovať hrubého čreva","cas":"2021-11-24T05:13:21Z"} {"handler":"POST /collect","jobID":"Collect-11-24-2021_051320","level":"error","method":"initiateConfdCollection","msg":"Nepodarilo sa získať údaje z Namespace: <ip>","čas":"2021-11-24T05:13:21Z"}
Pulkit Kundra

Dostal vyššie uvedených chýb pri používaní pkg.ísť.dev/net/http
Pulkit Kundra

Ak chcete ísť s net/http prístup a ste stále chybu, najlepšie vložiť že ako novú otázku. Pripadá mi, že majú -sadresa url, a -v všetky v rovnakej string tam.
Daniel Farrell

V iných jazykoch

Táto stránka je v iných jazykoch

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................