अप्रत्याशित स्ट्रिंग के अंत में लाइन.
आप उपयोग कर सकते हैं fmt.Sprintf
प्रारूप करने के लिए एक स्ट्रिंग इतना है कि तुम नहीं है करने के लिए यह एक साथ सिलाई द्वारा हाथ. मैं खोजने के लिए यह आसान करने के लिए पढ़ने और लिखने, अपने आप को:
fmt.Sprintf("curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://%s/restconf/data/ -v", ip_string)
लगता है आप की तरह की कोशिश कर रहे हैं बनाने के लिए एक शैल कमांड आह्वान करने के लिए कर्ल. बेहतर कोशिश कर रहा से बचने के लिए अपने 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 अनुरोध बनाने के लिए और निराकरण 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!