Golang'da tırnak işaretleri ve eğik çizgiler içeren dize nasıl eklenir

0

Soru

Bir örnek paylaşacağım

Aşağıdaki satırı golang dizesinde istiyorum curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://<ip>/restconf/data/ -v

yazdığım kod:

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

yanılmak: satırın sonunda beklenmeyen dize.

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

En iyi cevabı

1

satırın sonunda beklenmeyen dize.

Kullanabilirsiniz fmt.Sprintf bir dizeyi elle birbirine dikmeniz gerekmeyecek şekilde biçimlendirmek için. Bunu kendim okumayı ve yazmayı daha kolay buluyorum:

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

Kıvrılmayı çağırmak için bir kabuk komutu oluşturmaya çalışıyormuşsunuz gibi görünüyor. Senden kaçmaya çalışmaktan iyidir. curl kabuk için argümanlar, çağırmaktır curl doğruca. Kalmadan kabuk endişelenecek bağımsız ayrı Gidin kullanabilirsiniz bu şekilde alıntı:

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

Yine de senin yerinde olsam kullanırdım. https://pkg.gitmek.isteği yapmak ve ortadan kaldırmak için dev/net/http os/exec tamamen. Performans ve verimlilik daha iyi olacak ve yanıtın ve herhangi bir hata koşulunun ele alınması bunu yapmaktan çok daha kolay olacaktır curl ve çıktıyı ayrıştırmaya ve hata kodlarını işlemeye çalışıyorum.

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

Teşekkürler cevap için. Peki ya bayraklar - u-s ve-v buna nasıl dahil edilir
Pulkit Kundra

{"error":"ayrıştırılamadı \"-s http://<ip>URL açılamıyor ilk yol kesimi kolon içerir /restconf/data/ -v\"","işleyici":"POST /collect","jobİD":"Collect-11-24-2021_051320","level":"error","method":"initiateConfdCollection","msg":"Getrunningconfig: talep oluşturma Başarısız: ayrıştırılamadı \"-s http://<ip>URL açılamıyor ilk yol kesimi kolon içerir /restconf/data/ -v\"","time":"2021-11-24T05:13:21Z"} {"işleyici":"POST /collect","jobİD":"Collect-11-24-2021_051320","level":"error","method":"initiateConfdCollection","msg":"Ad veri alınamadı: <ip>21Z 13 24T05 2021-11 ","time":" -::"}
Pulkit Kundra


İsterseniz gidin ile net/http yaklaşın ve bir hata alıyorsunuz, bunu yeni bir soru olarak yapıştırmak en iyisidir. Bana göre bu -s, url ve -v hepsi aynı ipte.
Daniel Farrell

Diğer dillerde

Bu sayfa diğer dillerde

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