スクリプトでqm (qemu) 出力を使用する

スクリプトでqm (qemu) 出力を使用する

QEMU エージェントを使用して、スクリプト内から QEMU VM の起動が完了したかどうかを判断しようとしています。

問題は、出力を変数に割り当てたり、ファイルにパイプしたりできないことです。

[root@node1 dir]# isrunning=$(qm agent 1234 ping)
VM 1234 is not running
[root@node1 dir]# echo $isrunning

[root@node1 dir]# isrunning=`qm agent 1234 ping`
VM 1234 is not running
[root@node1 dir]# echo $isrunning

[root@node1 dir]# qm agent 1234 ping > /tmp/qmclonevm
VM 1234 is not running
[root@node1 dir]# echo /tmp/qmclonevm 
/tmp/qmclonevm
[root@node1 dir]# qm agent 1234 ping | tee /tmp/qmclonevm
VM 1234 is not running
[root@node1 dir]# cat /tmp/qmclonevm 
[root@node1 dir]# 

qm は通常どおり stdout に印刷するだけだと思っていましたが、そうではないようです。

ここで何が起こっているのか、その問題を回避する方法を知っている人はいますか? または、VM が完全に起動しているかどうかを確認するための別の解決策を提供できる人はいますか?

答え1

交換する

ping

ping 2>&1

qm の stderr を stdout にリダイレクトします。

関連情報