NUT가 UPS 배터리가 부족하다고 보고하면 다양한 쉘 명령을 실행합니다.

NUT가 UPS 배터리가 부족하다고 보고하면 다양한 쉘 명령을 실행합니다.

Debian 서버에 패키지를 성공적으로 설치하여 USB를 통해 Ellipse PRO 1200 UPS의 상태(배터리 수준 반환) nut를 얻을 수 있습니다 .upsc my-ups

참고: 정전이 발생하면 어떤 일이 발생하는지 테스트하지 않았습니다.

UPS는 Debian 서버 외에 다른 장치(일부 라우터/스위치 및 NAS)에 전원을 공급합니다.

이 경우, 제가 생각하는 NUT의 작동 방식을 고려해 볼 때, NAS에 NUT를 설치하고 이를 NUT 슬레이브로 선언해야 합니다. 그러면 Debian 서버(NUT 마스터)는 배터리가 부족해지면 NAS에 종료 명령을 내리고 그런 다음 스스로 닫힙니다.

문제는 NAS에 NUT를 설치할 수 없지만(OS는 지원되지 않음) SSH로 연결하여 종료하라고 할 수 있다는 것입니다.

NUT가 슬레이브를 종료하도록 명령하기 위해 일반적으로 실행되는 스크립트와 함께 내 스크립트를 어떻게/어디에 배치할 수 있습니까?

내가 찾을 수 있는 유일한 곳 SHUTDOWNCMD/etc/nut/upsmon.conf문서:

SHUTDOWNCMD "/sbin/shutdown -h +0"

내 생각엔 이 명령을 SSH-shutdown-command를 실행하고 데비안 서버를 종료하는 손으로 작성한 스크립트로 대체할 수 있을 것 같습니다.

문제는 SHUTDOWNCMD마지막 작업인 것 같습니다: 배터리가 매우 부족할 때. 내 스크립트에서 다른 모든 장치에 연결하려면 배터리가 방전되기 전보다 시간이 더 걸릴 것입니다.

감사해요

답변1

upssched.conf(5)이벤트가 발생한 후 타이머에서 자신만의 스크립트를 실행 해 볼 수 있습니다 .

기본적으로 upssched.conf다음과 같이 진행됩니다.

CMDSCRIPT /bin/your-script.sh
AT ONBATT * EXECUTE emailonbatt
AT ONBATT * START-TIMER upsonbatt 300
AT ONLINE * EXECUTE emailonline
AT ONLINE * CANCEL-TIMER upsonbatt upsonline

이를 통해 NUT는 다음을 수행합니다.

  • UPS는 배터리 전원으로 작동한 후 즉시 작동합니다 /bin/your-script.sh emailonbatt.
  • UPS는 5분 동안 배터리 전원으로 작동됩니다 /bin/your-script.sh upsonbatt.
  • UPS는 라인 전원이 복원되는 즉시 작동 가능하게 됩니다 /bin/your-script.sh emailonline.
  • 타이머가 여전히 활성 상태인 경우 UPS가 회선 전원을 복원한 후 upsonbatt즉시 타이머를 취소해야 합니다 . 그렇지 않으면 를 실행하십시오 /bin/your-script.sh upsonline.

스크립트는 다음과 같습니다.

#!/bin/bash
case $1 in
        emailonbatt)
                  mail -s "UPS on battery power" [email protected]
                  ;;
        emailonline)
                  mail -s "UPS on line power" [email protected]
                  ;;
        upsonbatt)
                  ssh root@nas shutdown -h +0
                  ;;
        upsonline)
                  etherwake 01:23:45:AB:CD:EF
                  ;;
esac

AT 문의 구문은 for 매뉴얼 페이지에서 찾을 수 있으며 upssched.conf(5)사용 가능한 알림 이벤트 유형은 for 매뉴얼 페이지에서 찾을 수 있습니다 upsmon(8).

답변2

당신이 하고 싶은 일(미리 만들어진 후크를 사용하는 것)이 가장 우아한 방법입니다.

그러나 후크가 없거나 후크가 사용자의 요구에 적합하지 않아 이것이 불가능할 경우 폴링 방법도 선택 사항입니다.

/var/log파일에서 NUT 구성 요소의 출력을 모니터링할 수 있습니다.

예를 들어 내(Debian 7의 Salicru UPS)는 다음을 기록합니다.

10월 28일 13:37:49 호스트 이름 upsmon[1766]: UPS salicru@caramon 배터리 전원 공급

UPS가 배터리로 전환되면 이

10월 28일 13:39:39 호스트 이름 upsmon[1766]: UPS salicru@caramon 온라인 전원 공급 장치

전력이 복구되면.

정전을 시뮬레이션하고 로그 메시지를 확인한 다음 1분(또는 5분)마다 실행되는 cron 작업을 작성하고 로그에서 해당 줄을 찾아 원하는 작업을 수행할 수 있습니다.

관련 정보