Скрипт управления session redback

Skip to end of metadata
Go to start of metadata
#!/bin/bash

function __radclient() {
    res=$(radclient -c 1 -r 2 -t 1 -x $nas_ip:$coa_port $1 $coa_psw)
    ret=$?
        set +x
        echo "$res" | grep -q "Error-Cause = 0" && ret=0
        echo "$res" | grep -q "Error-Cause = Resources Unavailable" && ret=254
        if echo "$res" | grep -q "Error-Cause = Session-Context-Not-Found"; then
             echo "User-Name=\"$ip\"" | radclient -x $nas_ip:$coa_port disconnect $coa_psw
             echo "User-Name=\"$login\"" | radclient -x $nas_ip:$coa_port disconnect $coa_psw
        fi
        if echo "$res" | grep -q "Error-Cause = Missing-Attribute"; then
             echo "User-Name=\"$ip\"" | radclient -x $nas_ip:$coa_port disconnect $coa_psw
             echo "User-Name=\"$login\"" | radclient -x $nas_ip:$coa_port disconnect $coa_psw
            ret=252
        fi
        set -x
        return $ret
}

LOG(){
        echo "$@"
}

function user_add (){
        :
}

function user_del (){
    user_disconnect
}

function user_disconnect (){
    echo "Acct-Session-Id=\"$acct_session_id\"" | __radclient disconnect
    echo "User-Name=\"$ip\"" | __radclient disconnect
    echo "User-Name=\"$login\"" | __radclient disconnect
}

function user_accept (){
        echo "Acct-Session-Id=\"$acct_session_id\",Forward-Policy=\"in:FWPOL_ACCEPT\"" | __radclient coa
}

function user_drop (){
        echo "Acct-Session-Id=\"$acct_session_id\",HTTP-Redirect-Profile-Name=\"CARBON_URL_BLOCKED\",Forward-Policy=\"in:FWPOL_BLOCKED_REDIRECT\"" | __radclient coa
}

function user_redirect (){
        echo "Acct-Session-Id=\"$acct_session_id\",HTTP-Redirect-Profile-Name=\"CARBON_URL_NEGBAL\",Forward-Policy=\"in:FWPOL_NEGBAL_REDIRECT\"" | __radclient coa
}

function user_redirect_cancel (){
        echo "Acct-Session-Id=\"$acct_session_id\",Forward-Policy=\"in:FWPOL_ACCEPT\"" | __radclient coa
}

function user_rate_set (){
        echo "Acct-Session-Id=\"$acct_session_id\",Deactivate-Service-Name=\"SERVICE_INET\",Service-Name=\"SERVICE_INET\",Service-Action=\"0\",Service-Parameter=\"Rate-Inet-in=$ceil_in Burst-Inet-in=${ceil_in}00 ExBurst-Inet-in=${ceil_in}00 Rate-Inet-out=$ceil_out Burst-Inet-out=${ceil_out}00 ExBurst-Inet-out=${ceil_out}00\""  | __radclient coa
}
function user_rate_set_cancel (){
  :
}

function user_event_before(){
    :
}

function user_event_after(){
    :
}
rad_acc_stop(){
:
}

user_info(){
        echo '<pre>' > /tmp/${user_id}_user_info.new
        echo '<span style="font-size: 9px">' >>  /tmp/${user_id}_user_info.new
        ( . $EVENT_HANDLERS_DIR/${NAS_SCRIPT_NAME%.sh}.d/user_info ) >> /tmp/${user_id}_user_info.new || true
        echo '</span>' >> /tmp/${user_id}_user_info.new
        echo '</pre>' >> /tmp/${user_id}_user_info.new
        mv -f /tmp/${user_id}_user_info.new /tmp/${user_id}_user_info
        chown apache:apache /tmp/${user_id}_user_info
}

users_from_nas() {
# todo  настройка периодической синхронизации с оборудованием.
# рекомендуется настраивать через 2 мес использования
return 0
        local SYNCDIR="/var/lib/event/sync/$nas_ip"
        mkdir -p $SYNCDIR
            __xge_ssh_send xgesh show list xge_blocked_list | grep '^[0-9].*'  > $SYNCDIR/blocked_list.nas
            __xge_ssh_send xgesh show list xge_negbal_list | grep '^[0-9].*'  > $SYNCDIR/negbal_list.nas
            __xge_ssh_send xgesh show list xge_auth_list | grep '^[0-9].*'  > $SYNCDIR/auth_list.nas
}

send_cmd() {
        ip=$1
        cmd=user_${2}
                set -x
        echo "env $env_str"
        $cmd
        set +x
}

main() {
        . /usr/local/bin/user_env $ip
        . ./main.ini
        abonent_log_dir="/var/log/abonents/${abonent_id}/"
        mkdir -p "$abonent_log_dir"

        PS4=" \D{%Y-%m-%d %T} ssh ${SSH_CLIENT%% *} $HOSTNAME rtsh session "$@"[$$]: "

        echo '' >> "${abonent_log_dir}/rtsh_${user_id}.log"
        send_cmd "$@" 2>&1 | tee -a "${abonent_log_dir}/rtsh_${user_id}.log"
}

bin_session=${BASH_SOURCE:-/var/lib/event/bin/redback.sh}
ubin_session="${bin_session//bin/ubin}.hook"
[ -f "$ubin_session" ] && source "${ubin_session}"

# ÐÏËÁ ×ÒÅÍÅÎÎÏ
if [ "${is_daemon:--}" != 1 ]; then
        main "$@"
        exit $?
fi
oss_pathname=${EVENT_HANDLERS_DIR%/*} #todo export from daemon
. $oss_pathname/main.ini
Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.