예상치 못한 문자열의 끝에서 라인입니다.
당신이 사용할 수 있는 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!