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

accel-ppp прерывание pppoe скрипт

Привет!

 

Обращение к тем юзает связку accel-ppp(radius)+lanbilling ,кто как кикает сессии pppoe .

 

Может кто поделится скриптиком или поможет написать .

Не бить ногами, никогда не писал скрипты ,получилась болванка :

#!/bin/bash

#

# drop session pppoe by accel-ppp

#

#

LOGIN=$1

 

nc 10.0.17.2 2001

 

terminate username LOGIN

 

 

 

exit 0

Edited by RG-45

Share this post


Link to post
Share on other sites

nc 10.0.17.2 2001

 

terminate username LOGIN

 

exit 0

эквивалентно

accel-cmd terminate username LOGIN

Поясните пожста. Вчем?

 

не занимайтесь скриптоонанизмом, юзайте DM (RFC3576)...

Я не нашел атрибута в словаре биллинга .

Share this post


Link to post
Share on other sites

Я не нашел атрибута в словаре биллинга .

какого? и добавить ручками - не (если биллинг действительно его шлет но разрабы включить забыли)?

Share this post


Link to post
Share on other sites

RG-45

это PoD-запрос, о нём написано в первом же ответе в этом топике. вы вообще читаете, что вам пишут?

Нет не читаю !!!! Я понимаю только картинки !!!! .....Травишь .... Конечно читаю .

Share this post


Link to post
Share on other sites

Скрипт /usr/local/billing/handler, его логи в /usr/local/billing/srvctl.log

 

COA - password - секрет для радиуса и DM.

 

--action edit мы не используем, --action start мы тоже не используем, ip передается в --action start только один - тот который в sessionsradius в дебаг пишутся все действия, мы используем только --action stop: при смене скорости и блокировке.

 

Первое: в действии —stop нужно сделать два крупных ветвления если —reason changed, ветка смена скорости иначе ветка остановки сессии, если остановка - тогда stop

 

Как только работа будет отлажена, можно будет закомментировать строку log_error "DEBUG" внутри скрипта, уберутся строки содержащие DEBUG.

 

#!/usr/bin/bash
#
#
######################################
### Created by Vitaliy Razzhivin   ###
### Network Solution, 2015         ###
### razzhivin@lanbilling.ru        ###
### LB-base-2.0-007+               ###
### CentOS 5.x-6.x                 ###
### Accel-PPP                      ###
######################################
#
# Prerequisites:
# - netmask util (e.g: rpm -ivh http://pkgs.repoforge.org/netmask/netmask-2.3.7-3.2.el5.rf.x86_64.rpm)
# - freeradius-utils (yum install freeradius-utils)

PARAMS="$*" # all parameters for ./handler from billing
LOG='/usr/local/billing/srvctl.log' # no comments

COA_PORT='3799' # port is default
COA_SECRET='YOURPASSWORD' # coa secret key

RADCLIENT='/usr/bin/radclient -t1 -r1 -c1 -x' # use mega-special radius client that support CoA :)

# flushing variables
ACTION=''
REASON=''
SESSION=''
LOGIN=''
NAS=''
IP=''
SHAPE=''
OLDSHAPE=''
BNGNAME=''
MAC=''
GUEST=''
PASSWORD=''
OLDBLOCKED=''
BLOCKED=''

log()
{
   echo "[`date +'%d-%m-%Y %H:%M:%S'`] (${SUBSCRIBER} ${IP}) - $1" >> $LOG # log regular events
}

log_error()
{
   echo "[`date +'%d-%m-%Y %H:%M:%S'`] - $1 [$PARAMS]" >> $LOG # log error events
}

# parsing handler parameters
while [ -n "$1" ]
do
   case $1 in
   "--action")
       ACTION=$2
       ;;
   "--reason")
       REASON=$2
       ;;
   "--session")
       SESSION=$2
       ;;
   "--login")
       LOGIN=$2
       ;;
   "--nas")
       NAS=$2
       ;;
   "--ip" | "--net")
       IP=$2
       ;;
   "--shape")
       SHAPE=$2
       ;;
   "--oldshape")
       OLDSHAPE=$2
       ;;
   "--opt-bng-name")
       BNGNAME=$2
       ;;
   "--mac")
       MAC=$2
       ;;
   "--guest")
       GUEST=$2
       ;;
   "--password")
       PASSWORD=$2
       ;;
   "--oldblocked")
       OLDBLOCKED=$2
       ;;
   "--blocked")
       BLOCKED=$2
       ;;
   *)
       log_error "Unknown parameters: $1, $2"
       ;;
   esac

   shift 2
done

log_error "DEBUG"

case $ACTION in
   "stop")

       if [ -z ${LOGIN} ]
       then
           log_error "LOGIN is not defined"
           exit 1
       fi

       if [ -z ${NAS} ]
       then
           log_error "NAS is not defined"
           exit 1
       fi

       if [ -z ${IP} ]
       then
           log_error "IP is not defined"
           exit 1
       fi

       if [ ${REASON} = 'changed' ]
       then
           if [ -z ${SHAPE} ]
           then
               log_error "SHAPE is not defined"
               exit 1
           fi

           if [ -n ${OLDSHAPE} ]
           then
               log "Changing speed ${OLDSHAPE} => ${SHAPE}"
               echo "User-Name=${LOGIN},
                     Framed-IP-Address=${IP},
                     Filter-Id=${SHAPE}" | ${RADCLIENT} ${NAS}:${COA_PORT} coa ${COA_SECRET} >> ${LOG}
           fi
       else
           log "Logging off subscriber or blocked => ${REASON}"
           echo "User-Name=${LOGIN},
                 Framed-IP-Address=${IP}" | ${RADCLIENT} ${NAS}:${COA_PORT} disconnect ${COA_SECRET} >> ${LOG}
       fi
       ;;
   "isg-stop")
       echo "1" > /dev/null
       ;;
   "quota")
       echo "1" > /dev/null
       ;;
   "start")
       echo "1" > /dev/null
       ;;
   "edit")
       echo "1" > /dev/null
       ;;
   "off")
       echo "1" > /dev/null
       ;;
   "on")
       echo "1" > /dev/null
       ;;
   "create")
       echo "1" > /dev/null
       ;;
   "delete")
       echo "1" > /dev/null
       ;;
   *)
       log_error "Unknown action $action"
       ;;
esac

Edited by hsvt

Share this post


Link to post
Share on other sites

В общем решили так :

скрипт для ланбиллинга :

#!/bin/bash

# session pppoe by accel-ppp

#

#

LOGIN=$2

 

echo terminate username ${LOGIN} | nc 10.0.17.2 2001

 

 

10.0.17.2 это IP acell-ppp

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

 

 

exit 0

 

Все работает !!! Пользуйтесь господа !

Edited by RG-45

Share this post


Link to post
Share on other sites

RG-45

А чем вас традиционный способ(и даже можно сказать, универсальный) с PoD через radclient не устроил. Зачем нужно пользовать CLI-команды?

 

Ну реально, PoD по User-Name будет работать не только с accel, но и со многими другим BRAS (хотя некоторые хотят чётко session-id вместо user-name)

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.