SH - 如何使脚本读取输出并遵循基于该输出的条件



我有一个 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:行的部分,因为我不知道该怎么做。

有人可以帮助我吗?

使用 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 不要打印出匹配的文本。

相关内容

  • 没有找到相关文章

最新更新