В продолжение темы. Один хороший человек с локал.ком.уа поделился скриптом пинговалки, который совместно с smstools3 дает просто потрясающие результаты по мониторингу каналов. Протестировал и был приятно удивлен, что совсем нет лишнего флуда. Хост пропал - смс, через час хост появился - опять смс. Публикуется с разрешения автора, респект ему и уважуха.
#!/bin/sh
####################################
# #
# Ping test on sms #
# by VitalyMoiseev (c) http://local.com.ua/forum/ #
# #
####################################
list_host="ya.ru mail.ru google.com ukr.net" # ну и список можно продолжать до бесконечности
list_sms="38050ххххххх 38050ххххххх" # понятно, что телефонов может быть как один так и несколько
msg_bad="empty"
msg_ok="empty"
for host in ${list_host}; do
count_sms="0";
name_file=/var/log/ping_test.${host}
if [ -r ${name_file} ]; then
count_sms=`cat ${name_file}`
else
echo "0" > ${name_file}
fi
loss=`/sbin/ping -c 2 -s 1 -i 0.5 ${host} | grep 'packet loss' | awk '{print $7}'`
if [ "${loss}" = "100.0%" ]; then
if [ ${count_sms} = "0" ]; then
echo "1" > ${name_file}
elif [ ${count_sms} = "1" ]; then
if [ "${msg_bad}" = "empty" ]; then
msg_bad="net svyazi s "
fi
msg_bad="${msg_bad} ${host} "
echo "2" > ${name_file}
fi
else
if [ ${count_sms} = "2" ]; then
if [ "${msg_ok}" = "empty" ]; then
msg_ok="svyaz vostanovlena "
fi
msg_ok="${msg_ok} ${host}(${loss}) "
echo "0" > ${name_file}
fi
if [ ${count_sms} = "1" ]; then
echo "0" > ${name_file}
fi
fi
done
d=`date "+%d--%H-%M"`
d1=`date "+%d.%m.%Y %H:%M"`
if [ "${msg_bad}" != "empty" ]; then
for sms_num in ${list_sms}; do
touch /etc/sms_${sms_num}
echo "To: ${sms_num}" > /etc/sms_${sms_num}
echo "" >> /etc/sms_${sms_num}
echo "${d1} ${msg_bad}" >> /etc/sms_${sms_num}
mv /etc/sms_${sms_num} /var/spool/sms/outgoing/
done
echo ${d1} ${msg_bad} >> /var/log/ping_test
fi
if [ "${msg_ok}" != "empty" ]; then
for sms_num in ${list_sms}; do
touch /etc/sms_${sms_num}
echo "To: ${sms_num}" > /etc/sms_${sms_num}
echo "" >> /etc/sms_${sms_num}
echo "${d1} ${msg_ok}" >> /etc/sms_${sms_num}
mv /etc/sms_${sms_num} /var/spool/sms/outgoing/
done
echo ${d1} ${msg_ok} >> /var/log/ping_test
fi
exit 0