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