วิธีการเพิ่มข้อความกับรื่องและ slashes ใน golang

0

คำถาม

ฉันจะแบ่งเป็นตัวอย่าง

ฉันต้องการเส้นทางด้านล่างใน golang ข้อความ curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://<ip>/restconf/data/ -v

รหัสฉันเขียน:

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

err: ที่ไม่คาดหวังข้อความอยู่ที่ตำแหน่งจบบรรทัด.

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

คำตอบที่ดีที่สุด

1

ที่ไม่คาดหวังข้อความอยู่ที่ตำแหน่งจบบรรทัด.

คุณสามารถใช้ fmt.Sprintf ต้องเป็นรูปแบบข้อความนั้นคุณไม่ต้องเย็บมันด้วยกันด้วยมือไปแล้ว ฉันตามหาง่ายที่จะอ่านและเขียนตัวเอง:

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

ดูเหมือนว่าคุณกำลังพยายามที่จะสร้างเชลล์คำสั่งที่ใช้เพื่อเรียก Curl. ดีกว่าพยายามที่จะหลบหนีของคุณ curl อาร์กิวเมนต์สำหรับเชลล์เป็นต้องเรียกร้อง curl โดยตรง ทางนี้คุณสามารถใช้ไปแยกกันอนที่อาร์กิวเมนต์หนึ่งตัวโดยไม่ต้องห่วงเรื่องเชลล์ที่อ้างถึง:

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

อย่างไรก็ตามถ้าฉันเป็นคุณผมจะใช้ https://pkg.go.dev/net/http เพื่อทำสิ่งที่ร้องขอมาต้องการและ obviate os/exec ทั้งหมด การแสดงและให้เกิดประสิทธิภาพดีขึ้นและการจัดการตอบสนองและมีเงื่อนไขข้อผิดพลาดจะเป็น ทางที่ ง่ายกว่าทำอย่างนั้นผ่าน curl และพยายามที่จะแสดงผลการวิเคราะห์และจัดการเกิดข้อผิดพลาดหัสโปรแกรมกันซะหน่อย

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

ขอบคุณสำหรับตอบกลับ. แต่แล้วเรื่องสถานะ-u-s และวีธีรวมมัน
Pulkit Kundra

{"เกิดข้อผิดพลาด":"การวิเคราะห์\"-s http://<ip ของ>/restconf/ข้อมูล/-v\":แรกเส้นทางเลือกอยู่ในที่อยู่ URL ไม่สามารถมีเครื่องหมาย:","เครื่องมือจัดการ":"โพสต์/collect","jobID":"Collect-11-24-2021_051320","level":"error","method":"initiateConfdCollection","msg":"Getrunningconfig:ล้มเหลวในการสร้างการร้องขอ:การวิเคราะห์\"-s http://<ip ของ>/restconf/ข้อมูล/-v\":แรกเส้นทางเลือกอยู่ในที่อยู่ URL ไม่สามารถมีเครื่องหมาย:","เวลา":"2021-11-24T05:13:21Z"}{"เครื่องมือจัดการ":"โพสต์/collect","jobID":"Collect-11-24-2021_051320","level":"error","method":"initiateConfdCollection","msg":"ล้มเหลวในการหาข้อมูลจากย้ายไปยัง:<ip ของ>","เวลา":"2021-11-24T05:13:21Z"}
Pulkit Kundra

มีคนอยู่เหนือเกิดข้อผิดพลาดขณะใช้ pkg.ไปแล้วdev/ข่าย/http
Pulkit Kundra

ถ้าคุณอยากไปกับที่ net/http เข้าไปและคุณกำลังจะเกิดข้อผิดพลาดที่ดีที่สุดต้องวางนั่นเป็นคำถามใหม่. ดูเหมือนว่ามี -sที่อยู่ url ที่แล้ว -v ทั้งหมดอยู่ในที่เดียวกับข้อความนั่น
Daniel Farrell

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

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

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่