在腳本中使用 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 會像平常一樣簡單地印到標準輸出,但事實似乎並非如此。

有誰知道這裡發生了什麼以及如何解決該問題,或者有人可以提供不同的解決方案來檢查虛擬機器是否完全啟動?

答案1

代替

ping

ping 2>&1

將 qm 的 stderr 重新導向到 stdout。

相關內容