我有一台KVM虚拟机随机关闭。直到我解决它,我必须保持它并运行。
我通过执行命令virsh dominfo kvm110
来了解虚拟机是否正在运行。输出:
[root@dal01 ~]# virsh dominfo kvm110
Id: 54
Name: kvm110
UUID: ea136d63-4806-4d8c-a9b3-7b9f412552c3
OS Type: hvm
State: running
CPU(s): 7
CPU time: 885.4s
Max memory: 10485760 KiB
Used memory: 10485760 KiB
Persistent: no
Autostart: disable
Managed save: no
Security model: none
Security DOI: 0
我想创建一个每秒执行上述命令的脚本,读取行State: running
然后根据2个可能的替代方法执行以下操作,运行并且不运行。我没有SH或Bash的编码经验,但我想这个脚本会很简单:
def check():
if "status" = "running" :
running = true
print ("VM is running")
else:
print ("VM is NOT running") + print time.localtime() #prints timestamp
run command "virsh start kvm110"
check()
我没有包含脚本运行的部分virsh dominfo kvm110
并从中解析行State:
,因为我不知道该怎么做。
有人可以帮助我吗?
答案 0 :(得分:2)
使用grep
。如果它与其参数匹配,则它成功退出(代码0),否则不成功(代码1或2表示错误)。您可以使用if
语句测试命令是成功还是失败:
if virsh dominfo kvm110 | grep -q '^State: *running'
then
echo "VM is running"
else
echo "VM is NOT running, " $(date) #prints timestamp
fi
-q
表示“安静”。它告诉grep不要打印出匹配的文本。