Есть программный рейд 6. Хочу мониторить его через sms и дублировать по почте. Как? Пока я склоняюсь к простому скрипту на python используя библиотеку gammu-python + питонову smtplib + встроенный мониторинг mdadm - mdadm monitor (для мониторинга и генерации события).
то-есть, скрипт будет оповещать беря информацию от mdadm monitor и слать её по sms и почте.
Слать sms используя библиотеку python легко:
import gammu
sm = gammu.StateMachine()
sm.ReadConfig()
sm.Init()
Хорошо, можно использовать cron, но можно и обойтись без него. Как? Очень просто.
timelim=30
limittmp=38
t=`/usr/bin/sensors | awk '/Core/ {print substr($3,2,2)}' | head -n 1`
if [ "$1" == "-d" -o "$1" == "--daemon" ]
then
while : ; do
if (("$t" > "$limittmp"))
then
echo "Тревога! Перегрев процессора. Аварийное выключение через 5 секунд" | mutt [email protected] -s "Температура ядра процессора"
sleep 5
shutdown -h now
fi
sleep $timelim
done
fi
Мы вводим в конструкцию бесконечный цикл и таймер. Если вы запускаете скрипт с ключом -d или --daemon, то скрипт работает в цикле.
[Ответ]
Hip-Hop 00:46 22.04.2011
Ну, это только пример. Я думаю всем понято, что парадигма linux и любой unix обладает необозримыми масштабами в плане системного администрирования. Нам остаётся только привести этот скрипт к шаблону даемона (штатными средствами системы) И оно будет работать в фоне выполнять свою задачу и мы будем иметь возможность управлять им.
'к шаблону даемона'
Вызывать этот скрипт средствами известных функций:
Хорошо, теперь давайте поработаем с hddtemp. Программа которая показывает температуру жёстких дисков.
#!/bin/bash
hdd=/dev/sd[a-e]
limittmp=30
timelim=30
message=""
if [ "$1" == "-d" -o "$1" == "--daemon" ]
then
while : ; do
for a in $hdd
do
t=$(hddtemp -n $a)
if (("$t" > "$limittmp"))
then
message=${message}"Тревога! Перегрелся $a\\n"
fi
done
if [ -n "$message" ]
then echo "$message" | tr '\\n' '\012' | mutt [email protected] -s "Температура hdd"
fi
sleep $timelim
done
fi
Тут чуть-чуть сложней. У нас несколько дисков и перегреться может любой из них. Циклом for мы перебираем эти диск и сравниваем их температуры. Переменная message - пустая ячейка памяти изначально, но принимает значение в случаи превышения лимита температуры. Если ячейка (переменная) имеет непустое значение (инициализирована), то отправляем письмо по почте.
[Ответ]
Hip-Hop 00:05 24.04.2011
Ну, и простой пример запуска этого скрипта через start-stop-daemon: