在脚本中使用 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。

相关内容