Перейти к содержимому
Калькуляторы

carbon 4

Настроил биллинг версии 4 по инструкции от White Crow (ссылка на инструкцию).

И тут возникли вопросы:

 

Специально ли в приведенном в качестве примера скрипте event_inc.sh отсутствую в начале круглые скобки или редактор их съел?

отсутствующие скобки выделил красным:

 

Скрытый текст

#/usr/bin/selfkiller -30:TERM -50:KILL & disown -a
LOG_LEVEL=ALL

sendsms(){
    sms="${sms//[^0-9]/}"
    if [ "${#sms}" -lt 11 ]; then                                                                                                                                           
        LOG WARN "Phone number of abonent $id is too short. SMS not sent."                                                                                                  
        return 1                                                                                                                                                            
    fi
    
}

SENDER=$1; shift
EVENT=$1; shift
DATA=$@

for VAR in $DATA; do
      [[ "$VAR" = *"="* ]] && eval ${VAR%%=*}=\'${VAR#*=}\'
done

LOG INFO "$SENDER $EVENT $DATA"

################################################################################################## 
telnet_user="user2"
telnet_password="YOUR_TELNET_PASSWD"
RADIUS_SECRET="YOUR_RADIUS_SECRET"

 case "$nas_ip" in
 ("192.168.10.9")
 nas_identity="nas1"
 ;;
 ("192.168.10.10")
 nas_identity="nas2"
 ;;
 ("192.168.10.11")
 nas_identity="nas3"
 ;;
 esac
################################################################################################## 

case "$EVENT" in
################################################################################################## 
("balance_negative")
if [ "$radius_logged" = "1" -a "$nas_ip" != "0.0.0.0" ]; then 
    /usr/local/bin/expect /var/lib/event/event1.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity
fi
;;
################################################################################################## 
("balance_positive")
if [ "$radius_logged" = "1" -a "$nas_ip" != "0.0.0.0" ]; then
    /usr/local/bin/expect /var/lib/event/event3.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity $ceil_in $ceil_out
fi
;;
################################################################################################## 
("rad_acc_start")
if [ "$nas_ip" != "0.0.0.0" ]; then
    if [ "$over_limit" = "0" ]; then
    /usr/local/bin/expect /var/lib/event/event3.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity $ceil_in $ceil_out
    else
    /usr/local/bin/expect /var/lib/event/event1.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity
    fi
fi
;;
################################################################################################## 
("rate_set")
if [ "$logged" = "1" -a "$nas_ip" != "0.0.0.0" -a "$over_limit" = "0" ] ; then 
    /usr/local/bin/expect /var/lib/event/event3.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity $ceil_in $ceil_out
fi
;;
##################################################################################################
(user_data_changed|user_data_changed_before)
if [ "$nas_ip" != "0.0.0.0" ]; then
    echo "User-Name=$login, NAS-IP-Address=$nas_ip" | radclient -r 1 $nas_ip:3799 disconnect $RADIUS_SECRET
    /usr/local/bin/expect /var/lib/event/event2.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity
fi
;;
##################################################################################################
("radius_update_err")
if [ "$nas_ip" != "0.0.0.0" ]; then 
    echo "User-Name=$login, NAS-IP-Address=$nas_ip" | radclient -r 1 $nas_ip:3799 disconnect $RADIUS_SECRET
    /usr/local/bin/expect /var/lib/event/event2.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity
fi
;;
##################################################################################################
(user_disconnect|get_info_fail|rad_acc_timeout)
if [ "$nas_ip" != "0.0.0.0" ]; then
    echo "User-Name=$login, NAS-IP-Address=$nas_ip" | radclient -r 1 $nas_ip:3799 disconnect $RADIUS_SECRET
    /usr/local/bin/expect /var/lib/event/event2.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity
fi
;;
##################################################################################################
("rad_acc_stop")
if [ "$nas_ip" != "0.0.0.0" ]; then 
    /usr/local/bin/expect /var/lib/event/event2.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity
fi
;;
##################################################################################################
("try_double_login")
if [ "$nas_ip" != "0.0.0.0" ]; then
    echo "User-Name=$login, NAS-IP-Address=$nas_ip" | radclient -r 1 $nas_ip:3799 disconnect $RADIUS_SECRET
    /usr/local/bin/expect /var/lib/event/event2.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity
fi
;;
##################################################################################################
("login") #Only for IP_auth
if [ "$nas_ip" != "0.0.0.0" -a "$auth_type"=1 ]; then
if [ "$over_limit" = "0" ]; then
/usr/local/bin/expect /var/lib/event/event3.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity $ceil_in $ceil_out
else
/usr/local/bin/expect /var/lib/event/event1.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity
fi
fi
;;
################################################################################################## 
("logout") #Only for IP_auth
if [ "$nas_ip" != "0.0.0.0" -a "$auth_type"=1 ]; then
/usr/local/bin/expect /var/lib/event/event2.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity
fi
;;
##################################################################################################
(*)
:
;;
esac

 

При ручном запуске этого скрипта ругается на строку: LOG INFO "$SENDER $EVENT $DATA"

пишет: event_mikrotik.sh: line 21: LOG: command not found

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Функция LOG отсутствует.
 

 LOG INFO "$SENDER $EVENT $DATA" 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Этот биллинг с радиус авторизацией не очень хорошо работает, обычно все его используют со статической авторизацией по IP адресу.

Достаточно прозевать момент переполнения дисков логами (а там да - каждый запрос на радиус сохраняется в логи), как вся работа по подключению новых абонентов остановится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ротация логов и мониторинг придуманы для слабаков?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Еще бы кто подсказал

 

2 часа назад, RN3DCX сказал:

Специально ли в приведенном в качестве примера скрипте event_inc.sh отсутствую в начале круглые скобки или редактор их съел?

отсутствующие скобки выделил красным:

 

  Показать содержимое

#/usr/bin/selfkiller -30:TERM -50:KILL & disown -a
LOG_LEVEL=ALL

sendsms(){
    sms="${sms//[^0-9]/}"
    if [ "${#sms}" -lt 11 ]; then                                                                                                                                           
        LOG WARN "Phone number of abonent $id is too short. SMS not sent."                                                                                                  
        return 1                                                                                                                                                            
    fi
    
}

SENDER=$1; shift
EVENT=$1; shift
DATA=$@

for VAR in $DATA; do
      [[ "$VAR" = *"="* ]] && eval ${VAR%%=*}=\'${VAR#*=}\'
done

LOG INFO "$SENDER $EVENT $DATA"

################################################################################################## 
telnet_user="user2"
telnet_password="YOUR_TELNET_PASSWD"
RADIUS_SECRET="YOUR_RADIUS_SECRET"

 case "$nas_ip" in
 ("192.168.10.9")
 nas_identity="nas1"
 ;;
 ("192.168.10.10")
 nas_identity="nas2"
 ;;
 ("192.168.10.11")
 nas_identity="nas3"
 ;;
 esac
################################################################################################## 

case "$EVENT" in
################################################################################################## 
("balance_negative")
if [ "$radius_logged" = "1" -a "$nas_ip" != "0.0.0.0" ]; then 
    /usr/local/bin/expect /var/lib/event/event1.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity
fi
;;
################################################################################################## 
("balance_positive")
if [ "$radius_logged" = "1" -a "$nas_ip" != "0.0.0.0" ]; then
    /usr/local/bin/expect /var/lib/event/event3.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity $ceil_in $ceil_out
fi
;;
################################################################################################## 
("rad_acc_start")
if [ "$nas_ip" != "0.0.0.0" ]; then
    if [ "$over_limit" = "0" ]; then
    /usr/local/bin/expect /var/lib/event/event3.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity $ceil_in $ceil_out
    else
    /usr/local/bin/expect /var/lib/event/event1.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity
    fi
fi
;;
################################################################################################## 
("rate_set")
if [ "$logged" = "1" -a "$nas_ip" != "0.0.0.0" -a "$over_limit" = "0" ] ; then 
    /usr/local/bin/expect /var/lib/event/event3.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity $ceil_in $ceil_out
fi
;;
##################################################################################################
(user_data_changed|user_data_changed_before)
if [ "$nas_ip" != "0.0.0.0" ]; then
    echo "User-Name=$login, NAS-IP-Address=$nas_ip" | radclient -r 1 $nas_ip:3799 disconnect $RADIUS_SECRET
    /usr/local/bin/expect /var/lib/event/event2.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity
fi
;;
##################################################################################################
("radius_update_err")
if [ "$nas_ip" != "0.0.0.0" ]; then 
    echo "User-Name=$login, NAS-IP-Address=$nas_ip" | radclient -r 1 $nas_ip:3799 disconnect $RADIUS_SECRET
    /usr/local/bin/expect /var/lib/event/event2.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity
fi
;;
##################################################################################################
(user_disconnect|get_info_fail|rad_acc_timeout)
if [ "$nas_ip" != "0.0.0.0" ]; then
    echo "User-Name=$login, NAS-IP-Address=$nas_ip" | radclient -r 1 $nas_ip:3799 disconnect $RADIUS_SECRET
    /usr/local/bin/expect /var/lib/event/event2.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity
fi
;;
##################################################################################################
("rad_acc_stop")
if [ "$nas_ip" != "0.0.0.0" ]; then 
    /usr/local/bin/expect /var/lib/event/event2.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity
fi
;;
##################################################################################################
("try_double_login")
if [ "$nas_ip" != "0.0.0.0" ]; then
    echo "User-Name=$login, NAS-IP-Address=$nas_ip" | radclient -r 1 $nas_ip:3799 disconnect $RADIUS_SECRET
    /usr/local/bin/expect /var/lib/event/event2.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity
fi
;;
##################################################################################################
("login") #Only for IP_auth
if [ "$nas_ip" != "0.0.0.0" -a "$auth_type"=1 ]; then
if [ "$over_limit" = "0" ]; then
/usr/local/bin/expect /var/lib/event/event3.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity $ceil_in $ceil_out
else
/usr/local/bin/expect /var/lib/event/event1.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity
fi
fi
;;
################################################################################################## 
("logout") #Only for IP_auth
if [ "$nas_ip" != "0.0.0.0" -a "$auth_type"=1 ]; then
/usr/local/bin/expect /var/lib/event/event2.sh $nas_ip $ip $telnet_user $telnet_password $nas_identity
fi
;;
##################################################################################################
(*)
:
;;
esac

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

5 часов назад, vlad11 сказал:

Ротация логов и мониторинг придуманы для слабаков?

Не правильные настройки придуманы для слабаков.

 

Сейчас 4 версия биллинга идет с ежемесячной арендой - перестанете платить или проблема с активацией - биллинг перестанет работать. А с ним перестанет работать и радиус - абоненты не выйдут в интернет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.