次のコードセグメントを使用して、XEN Hypervisor
上で実行されている仮想マシンの定義をXML
にしています。コードは、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())
と名付け与えるコマンドvirsh dumpxml Ubutnu14
を実行しようとしています。
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
バージョンである私はあなたがこれらの2つのシナリオで別のユーザーとしてvirshを実行している、とあなたが任意のURIを提供していないので、それは別のにlibvirtdインスタンスに接続されて期待していgo1.6.2 linux/amd64
はvirshをコマンドを環境変数のいずれかの種類に依存していますか?そのようなコマンドをシェル環境で実行していないときは、 – jcbwlkr
私はそれが理由だとは思わない。私のコードから "virsh dumpxml"コマンドを実行すると正しく動作し、 "error:command' dumpxml'はオプションが必要です "というメッセージが表示されます。シェル環境から実行すると同じ出力が得られます。 –
azizulhakim
これは単なる勘違いですが、それはどのようにそれらのドメインを探すかを知る方法によっては依然として問題になるかもしれません。試してみてください。 'virshCmd:= exec.Command(" sh "、" -c "、" virsh dumpxml Ubuntu14 ")' – jcbwlkr