다음 코드 세그먼트를 사용하여 XEN Hypervisor
에서 실행되는 가상 시스템의 정의 XML
을 얻습니다. 이 코드는 VM의 XML
을 줄 것이다 명령 virsh dumpxml Ubutnu14
이 Ubuntu14
golang exec 잘못된 동작
virshCmd := exec.Command("virsh", "dumpxml", "Ubuntu14")
var virshCmdOutput bytes.Buffer
var stderr bytes.Buffer
virshCmd.Stdout = &virshCmdOutput
virshCmd.Stderr = &stderr
err := virshCmd.Run()
if err != nil {
fmt.Println(err)
fmt.Println(stderr.String())
}
fmt.Println(virshCmdOutput.String())
이 코드는 항상 주어진 도메인 이름에 대한 오류 상태로 간다라는 이름의 실행하려고하고, 나는 다음과 같은 출력을 얻을. 내가 독립 명령 virsh dumpxml Ubuntu14
을 실행하면
exit status 1
error: failed to get domain 'Ubuntu14'
error: Domain not found: no domain with matching name 'Ubuntu14'
는하지만, 올바른 XML
정의를 얻을.
누군가 내가 잘못하고있는 것에 대한 힌트를 줄 수 있다면 감사하겠습니다. 내 호스트 시스템은 Ubuntu-16.04
하고 golang
버전은 당신이 두 시나리오에서 다른 사용자로 virsh를 실행하는 기대, 그리고 당신이 어떤 URI를 제공하지 않기 때문에, 그것은 다른 libvirtd 인스턴스에 연결하는 go1.6.2 linux/amd64
는 virsh를 명령은 환경 변수의 종류에 의존 하는가 (분명히 오류가 너무 처리합니까)? 당신이 쉘 환경에서 실행되지 않는다는 것과 같은 명령을 실행할 때 – jcbwlkr
그것이 이유라고 생각하지 않습니다. 내 코드에서 "virsh dumpxml"명령을 실행하면 올바르게 실행되고 "오류 : 명령'dumpxml'에 옵션이 필요합니다"라는 메시지가 표시됩니다. 쉘 환경에서 실행하면 동일한 결과를 얻습니다. –
azizulhakim
그것은 단지 직감이지만 도메인을 찾는 위치를 어떻게 알 수 있는지에 따라 여전히 문제가 될 수 있습니다. 그냥 시도해보십시오'virshCmd : = exec.Command ("sh", "-c", "virsh dumpxml Ubuntu14")' – jcbwlkr