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

Ответить
NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 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

~AsmodeuS~
Site Admin
Сообщения: 5749
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

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

Сообщение ~AsmodeuS~ »

1 почему не использовать монит ??
abills/misc/monit

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

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

Сообщение NiTr0 »

Потому что были случаи, когда радиус-сервер просто отказывался принимать коннекты. При этом процесс вроде как живой был.

Ответить