다른 시스템에서 호출한 스크립트가 올바르게 실행되지 않습니다.

다른 시스템에서 호출한 스크립트가 올바르게 실행되지 않습니다.

UPS의 정상적인 종료를 위한 몇 가지 스크립트를 작성하려고 합니다. 내 UPS가 freenas 시스템에 연결되어 있습니다. 또한 Ubuntu 18.04에서 KVM을 실행하는 KVM 서버가 있는데 이것이 제가 겪고 있는 몇 가지 문제입니다. KVM 서버에서 종료 스크립트를 호출하기 위해 freenas에 다음 스크립트가 있습니다.

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:///systemKVM 서버 스크립트의 모든 virsh 명령 앞에 추가 해야 합니다 .

관련 정보