我正在使用以下代碼段來獲取運行於XEN Hypervisor
上的虛擬機的XML
定義。該代碼試圖執行命令virsh dumpxml Ubutnu14
這將給VM的XML
命名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())
該代碼總是進入用於指定域名的錯誤情況,我得到下面的輸出。
exit status 1
error: failed to get domain 'Ubuntu14'
error: Domain not found: no domain with matching name 'Ubuntu14'
但是,如果我運行獨立的命令virsh dumpxml Ubuntu14
,我得到正確的XML
定義。
如果有人能給我一些提示我做錯了什麼,我將不勝感激。我的主機是Ubuntu-16.04
和golang
版本go1.6.2 linux/amd64
是否命令的virsh依賴於任何類型的環境變量?當你運行這樣的命令時,它不會在你的shell環境中運行 – jcbwlkr
我不認爲這是原因。因爲如果我從代碼運行「virsh dumpxml」命令,它會正確運行,並說「錯誤:命令'dumpxml'需要選項」。如果我從shell環境運行它,我會得到相同的輸出。 –
azizulhakim
這只是一種預感,但依賴於它如何知道在哪裏尋找這些域名,這仍然可能是問題。試試吧'virshCmd:= exec.Command(「sh」,「-c」,「virsh dumpxml Ubuntu14」)' – jcbwlkr