를 추가하는 방법은 문자열과 함께 따옴표에 슬래프로그램

0

질문

나는 예 공유

내가 원하는 라인이 아래에서 모든 문자열 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 이 직접 있습니다. 이 방법을 사용할 수 있는 이동을 별도의 인수에 대해 걱정할 필요없이 쉘 따옴표:

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!
2021-11-23 16:26:50

답변 감사합니다. 그러나 어떤 플래그-u-s-v 는 방법을 포함하는
Pulkit Kundra

{"오류":"분석\"s http://<ip>/restconf/data/-v\":첫째로 경로 세그먼트에는 URL 을 포함할 수 없습니다 콜론","핸들러":"포스트/collect","jobID":"Collect-11-24-2021_051320","level":"error","method":"initiateConfdCollection","msg":"Getrunningconfig 를 만들지 못했다는 요청:parse\"s http://<ip>/restconf/data/-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/net/http
Pulkit Kundra

하려면으로 이동 net/http 접근 및을 받고 있는 오류해 최선을 붙여넣기는 새로운 질문입니다. 내게 있는 -surl,고 -v 모두 동일한 문자열이다.
Daniel Farrell

다른 언어로

이 페이지는 다른 언어로되어 있습니다

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