Страница 1 из 1

Скрипт проверки работоспособности радиуса

Добавлено: Пн сен 14, 2009 4:00 pm
NiTr0
Наваял сабж. Для работы требует наличие установленного radiusclient-ng или чего-то аналогичного.
Если радиус упал - пытается его перезапустить, если биллинг ушел в себя - шлет предупреждение на почту, после чего - в следующий раз пытается перезапустить радиус.
О перезапуске радиуса и успешном его поднятии - опять-таки радостно отчитывается на почту.

Собссно сам скрипт, возможно - кому-то пригодится:

Код: Выделить всё

#!/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

Re: Скрипт проверки работоспособности радиуса

Добавлено: Пн сен 14, 2009 6:01 pm
~AsmodeuS~
1 почему не использовать монит ??
abills/misc/monit

Re: Скрипт проверки работоспособности радиуса

Добавлено: Пн сен 14, 2009 6:55 pm
NiTr0
Потому что были случаи, когда радиус-сервер просто отказывался принимать коннекты. При этом процесс вроде как живой был.