Пример. Accel-PPP, PPPoE + IPoE по неклассифицированному пакету L2 ЧЕРНОВИК

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (2)

просмотр истории страницы
h3. Скрипт управления session

Скрипт реализует только основные команды: установка шейпера, блокировка (однинаковое поведение на любые виды блокировок) и снятие блокировки.

Команда user_info покажет данные BRAS и проведёт базовую сетевую диагностику, и при отсутствии связи с абонентом может выполняться 3-5 секунд.


{code:title=/app/asr_billing/var/oss/core/<NAS>/ubin/session}
#!/bin/bash
. $(dirname $BASH_SOURCE)/../bin/session



###
### Документация по custom схемам OSS находится здесь:
### http://docs.carbonsoft.ru/x/HIAlAw
###

__coa_send() {
if [[ $owner_script == events.py ]]; then
echo "Не отправляем команды при авторизации, выходим из скрипта: exit 0"
exit 0
fi
echo "$@" | radclient -x $nas_ip coa $coa_psw &>$TMPDIR/radclient.$$
ret=$?
# exit 254 отложить передачу, todo возможно и другие схожие busy context и тд
grep "no response from server" $TMPDIR/radclient.$$ && exit 254
cat $TMPDIR/radclient.$$
return $ret
}

# Приходит при отключении пользователя администратором
# либо при добровольной блокировке.
user_disconnect() {
# echo "Framed-IP-Address=100.64.0.15" | radclient -x 192.168.1.130 disconnect AccelCoASecret
echo "Framed-IP-Address=${ip}" | radclient -x $nas_ip disconnect $coa_psw
}

# Приходит при удалении пользователя из биллинга
# И при смене критичных параметров(ip, vlan, port etc.)(со старыми значениями)
# Обычно используется для ВСЕХ видов авторизации
user_del() {
user_disconnect
}

# Приходит при превышении лимита, либо при отключении услуги
user_redirect() {
__coa_send "Framed-IP-Address=${ip},L4-Redirect=1"
}

# Приходит после оплаты, если хватило денег на включение услуги
user_redirect_cancel() {
__coa_send ip redirect del $ip
}


# Приходит при изменении скорости подключения
# Или включения\выключении услуги(турбокнопка, ночной форсаж и т.д.)
user_rate_set() {
__coa_send "Framed-IP-Address=${ip},Filter-Id=$ceil_in/$ceil_out"
}

# Приходит при нажатии кнопки info в учетной записи
user_info() {
sshpass -p ${telnet_password} ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o GSSAPIAuthentication=no ${telnet_login}@${telnet_ip} "
echo '<p style=\"color:#007Ac5\"><b>accel-cmd show sessions match ip ${ip}</b></p>'
echo '<pre style=\"height:auto;overflow: auto;\">'
accel-cmd show sessions match ip ${ip}
echo '</pre>'
echo '<p style=\"color:#007Ac5\"><b>ipset save | grep ${ip}</b></p>'
echo '<pre style=\"height:auto;overflow: auto\">'
ipset save | grep ${ip}
echo '</pre>'
echo '<p style=\"color:#007Ac5\"><b>ping -4 ${ip} -A -c4</b></p>'
echo '<pre style=\"height:auto;overflow: auto\">'
ping -4 ${ip} -A -c4
echo '</pre>'
echo '<p style=\"color:#007Ac5\"><b><span style=\"color: #999\">timeout 3</span> tcpdump -nni any src ${ip} -c 4</b></p>'
echo '<pre style=\"height:auto;overflow: auto\">'
timeout 3 tcpdump -nni any src ${ip} -c 4
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
[ "${is_daemon:--}" != 1 ] && cat /tmp/${user_id}_user_info
}

# Приходит при нажатии кнопки тест в учетной записи
user_test() {
:
}

# Приходит при создании пользователя в биллинге
# И при смене критичных параметров(ip, vlan, port etc.)(с новыми значениями)
# Обычно используется для ip авторизации
user_add() {
:
}

# Приходит после авторизации пользователя
# Рекомендуется политику пользователя передавать в радиус replay параметрах, А НЕ В ЭТОМ СОБЫТИИ,
# т.к. у любого оборудования есть ограничения на колличество отправляемых команд в секунду
user_accept() {
:
}

# Приходит при отключении пользователя
# Рекомендуется избегать удаления пользователя из списков, для экономии очереди команд на оборудовании
user_drop() {
:
}

# Приходит при добавлении услуги абоненту
usluga_add(){
:
}

# Приходит при удалении услуги у абонента
usluga_del(){
:
}

# Приходит при активации услуги
usluga_activated(){
:
}

# Приходит при деактивации услуги
usluga_deactivated(){
:
}
{code}
тут будет скрипт
{code}

h2. Примеры запросов в журнале RADIUS в режиме повышенной отладки