另一个系统调用的脚本无法正确运行

另一个系统调用的脚本无法正确运行

我正在尝试编写一些脚本以从我的 UPS 正常关闭。我的 UPS 连接到我的 freenas 系统。我还有一个在 Ubuntu 18.04 上运行 KVM 的 KVM 服务器,这就是我遇到的一些问题。我的 freenas 上有以下脚本来调用 KVM 服务器上的关闭脚本:

ssh [email protected] /opt/shutdown.sh

那么shutdown.sh我的KVM服务器上的脚本如下

#!/bin/bash

# Configure timeout (in seconds).
TIMEOUT=300
VIRSH=/usr/bin/virsh

# List running domains.
list_running_domains() {
        $VIRSH list | grep running | awk '{ print $2}'
}


echo "Try to cleanly shut down all running KVM domains..."

# Create some sort of semaphore.
touch /tmp/shutdown-kvm-guests

# Try to shutdown each domain, one by one.
list_running_domains | while read DOMAIN; do
        # Try to shutdown given domain.
        $VIRSH shutdown $DOMAIN
done

# Wait until all domains are shut down or timeout has reached.
END_TIME=$(date -d "$TIMEOUT seconds" +%s)

while [ $(date +%s) -lt $END_TIME ]; do
        # Break while loop when no domains are left.
        test -z "$(list_running_domains)" && break
        # Wait a litte, we don't want to DoS libvirt.
        sleep 1
done

# Clean up left over domains, one by one.
list_running_domains | while read DOMAIN; do
        # Try to shutdown given domain.
        $VIRSH destroy $DOMAIN
        # Give libvirt some time for killing off the domain.
        sleep 3
done

我在这里找到了KVM脚本在此输入链接描述

当我直接通过 SSH 连接到 KVM 服务器时,KVM 关闭脚本工作得很好,但是,当 freenas 系统通过 SSH 调用该脚本时,它似乎不起作用。我可以看到回声,所以我知道它正在被呼叫。我知道这不是最佳实践,但我将脚本的权限设置为 777 只是为了看看是否可以让它工作,但这似乎仍然没有帮助。任何见解将不胜感激。

答案1

我找到了罪魁祸首。它实际上与 SSH 或权限无关。我必须LIBVIRT_DEFAULT_URI=qemu:///system在 KVM 服务器脚本上的所有 virsh 命令之前添加。

相关内容