Jump to content
Калькуляторы

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

Share this post


Link to post
Share on other sites

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

 LOG INFO "$SENDER $EVENT $DATA" 

 

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

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

 

 

Share this post


Link to post
Share on other sites

Какие скобки? Это же case! :)

Share this post


Link to post
Share on other sites
5 часов назад, vlad11 сказал:

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

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

 

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this