Если радиус упал - пытается его перезапустить, если биллинг ушел в себя - шлет предупреждение на почту, после чего - в следующий раз пытается перезапустить радиус.
О перезапуске радиуса и успешном его поднятии - опять-таки радостно отчитывается на почту.
Собссно сам скрипт, возможно - кому-то пригодится:
Код: Выделить всё
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
SERVER=<Radius IP>
MAIL="admin@provider.com"
FROM="robot@billing.provider.com"
LOGIN="radtest"
PASSWORD="radtest"
NAS=<NAS IP>
CID="radtest"
SECRET="radiussecret"
radattr=`echo "User-Name = \"$LOGIN\", User-Password = \"$PASSWORD\", NAS-IP-Address = $NAS, Calling-Station-Id=\"$CID\"" | radclient $SERVER:1812 auth $SECRET -t 5 -r 6`
if [ $? -ne 0 ]; then
echo "Message-Authenticator = 0x00" | radclient $SERVER:1812 status $SECRET -t 5 -r 6 &>/dev/null
if [ $? -ne 0 ]; then
if [ ! -f /tmp/radrst.flag ]; then
/etc/init.d/radiusd restart
touch /tmp/raderr.flag
touch /tmp/radrst.flag
echo -e "From:$FROM\nTo:$MAIL\nSubject:Radius check\n\nRadius server was restarted at `date +\"%F %R\"` because it wasn't responding!"|sendmail $MAIL
fi
else
if [ -f /tmp/raderr.flag ]; then
if [ ! -f /tmp/radrst.flag ]; then
/etc/init.d/radiusd restart
touch /tmp/radrst.flag
echo -e "From:$FROM\nTo:$MAIL\nSubject:Radius check\n\nRadius server was restarted at `date +\"%F %R\"` because it was live, but didn't process user authentication!"|sendmail $MAIL
fi
else
echo -e "From:$FROM\nTo:$MAIL\nSubject:Radius check\n\n`date +\"%F %R\"` - Radius server didn't process user authentication!"|sendmail $MAIL
touch /tmp/raderr.flag
fi
fi
else
if [ -f /tmp/raderr.flag ]; then
rm -f /tmp/raderr.flag
fi
if [ -f /tmp/radrst.flag ]; then
rm -f /tmp/radrst.flag
echo -e "From:$FROM\nTo:$MAIL\nSubject:Radius check\n\n`date +\"%F %R\"` - Radius server is online!"|sendmail $MAIL
fi
fi