Есть выходные данные с UPS - подключён ли он к сети или нет. Нужен скрипт, который будет ежеминутно проверять вывод статуса UPS. Если статус ONLINE, то всё в порядке. Если статус OFFLINE - через 10 минут необходимо выполнить команду shutdown
Какие варианты пока пришли мне:
1. Засунуть скрипт в cron, и выполнять раз в минуту. Если статус плохой, отправить команду запуска другого скрипта, который со sleep'ом 10 минут ещё раз проверит статус, и если всё также плохо, от'shutdown'ит машину.
2. Скрипт проводит ежеминутную проверку и при обнаружении проблемы выводит единичку. Через минуту - следующую единичку суммирует к первой. При накоплении десяти единичек, выводит машину в shutdown.
Это на уровне логики. Какими командами это реализовать:
1. Проверяем статус UPS (upsc ups@localhost ups.status), если вывод равен OL CHRG - UPS подключен, вывод 0, если вывод равен OB DISCHRG LB - UPS без питания - вывод 1.
#!/bin/bash
stat=$(upsc ups@localhost ups.status) # 1. Вывести статус подключения UPS к сети, присвоить переменную stat
if [[ $stat = OB DISCHRG LB]] # 2. Если значение переменной равно OB DISCHRG LB
then
echo (i=1) # Вывести единицу
fi
Проверила, не пойму как вывести 1 с присвоением переменной i
2. Ставим счетчик на выведенные единицы, и когда счетчик насчитает 10 единиц, т.е. питание не восстановится за 10 минут, выполнить команду отключения компа:
for ((i=1; i < 10; i++))
do
echo $i
sleep 60
done
shutdown now
Если питание восстановилось за это время и вместо единицы получен ноль, то обнулить счетчик.
Как это скрестить?