在开始之前,如何检查特定服务器是否正在运行(使用 virsh 命令)| 重新启动吗?

rze*_*nks 2 linux bash shell virtual-machine virsh

我正在尝试重新启动、启动、关闭特定虚拟机。在这里,首先我想在运行脚本之前检查虚拟机是否已处于所需状态。

这些是虚拟机列表。

[root@demohost05 ~]# virsh list --all
Id    Name                           State
----------------------------------------------------
5     OwnCloud01                     running
6     OwnCloud02                     running
7     SiteMon                        running
-     vmtest                         shut off
Run Code Online (Sandbox Code Playgroud)

我想在实施之前检查 vmtest 是否正在运行

virsh start vmtest
Run Code Online (Sandbox Code Playgroud)

如何在 shell 脚本中使用 if 条件检查状态?

当我必须使用 sudo 命令时,如何避免输入密码。

sudo virsh start vmtest
Run Code Online (Sandbox Code Playgroud)

我还尝试使用授予 root 权限

sudo -i
virsh start vmtest
Run Code Online (Sandbox Code Playgroud)

但脚本结束时没有执行第二行。如何在同一个脚本文件中使用这两个命令?

if [conditions]
then
{

}
fi
Run Code Online (Sandbox Code Playgroud)

我不知道如何检查此类脚本的条件。

谢谢。

Sha*_*rad 7

尝试这个:


tmp=$(virsh list --all | grep " vmtest " | awk '{ print $3}')
if ([ "x$tmp" == "x" ] || [ "x$tmp" != "xrunning" ])
then
    echo "VM does not exist or is shut down!"
    # Try additional commands here...
else
    echo "VM is running!"
fi
Run Code Online (Sandbox Code Playgroud)
# For passwordless sudo:
sudo cat /etc/sudoers

# You'll see this:

# User privilege specification
root    ALL=(ALL:ALL) ALL

# To add user sharad as a sudo user:

# User privilege specification
root    ALL=(ALL:ALL) ALL
sharad  ALL=(ALL:ALL) ALL

# To add user sharad as a sudo user such that it doesn't ask for password (note the NOPASSWD):

# User privilege specification
root    ALL=(ALL:ALL) ALL
sharad  ALL=(ALL:ALL) NOPASSWD: ALL

# Read this for reference: http://www.ducea.com/2006/06/18/linux-tips-password-usage-in-sudo-passwd-nopasswd/
Run Code Online (Sandbox Code Playgroud)