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

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

Изменено пользователем RG-45

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


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

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

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


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

nc 10.0.17.2 2001

 

terminate username LOGIN

 

exit 0

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

accel-cmd terminate username LOGIN

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


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

nc 10.0.17.2 2001

 

terminate username LOGIN

 

exit 0

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

accel-cmd terminate username LOGIN

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

 

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

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

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


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

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

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

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


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

echo "User-Name=LOGIN" | radclient -x ip_bras:3799 disconnect пароль_accel

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


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

echo "User-Name=LOGIN" | radclient -x ip_bras:3799 disconnect пароль_accel

Проясните что это ?

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


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

RG-45

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

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


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

RG-45

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

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

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


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

Скрипт /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

Изменено пользователем hsvt

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


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

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

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

#!/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

 

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

Изменено пользователем RG-45

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


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

RG-45

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

 

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

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


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

Join the conversation

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

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

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

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

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

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

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