Дополнительные программы

Все дополнения расчитаны для установки в каталог /usr/abills/misc.

arping.pl

Универсальная внешняя утилита для ARP pingю Пока работает только с серверами доступа Mikrotik
/usr/abills/Abills/modules/Dv/arping.pl

  Usage: ./arping.pl ACCT_SESSION_ID=81809614 [DEBUG=1] [ L2=1 [ NAS_TYPES=mikrotik,mikrotik_dhcp ]]
  DEBUG     - Выводит отладочную информацию
  L2        - Не использовать NAS сесии, а вычислить NAS, к которому привязан пул в том же влане, что и хост сесии
  NAS_TYPES - Типы серверов доступа, которые могут выполнить arping

Установка:

  cd /usr/abills/libexec/
  ln -s ../Abills/modules/Dv/arping.pl .
  chmod +x arping.pl

Дописать в config.pl, чтоб в онлайне возле сесии появилась кнопка «ARPPING»

$conf{DV_EXTERNAL_DIAGNOSTIC}='ARPPING:/usr/abills/libexec/arping.pl ACCT_SESSION_ID=%ACCT_SESSION_ID%';

autozh.pl

Версия: 0.12; от 21.09.2013
autozh.pl Скрипт автозапа и отключения всех пользователей или выбранного пользователя системы из консоли.

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

./autozh.pl DEBUG=1 HANGUP=1 DAYS2FINISH=5 NEGATIVE_DEPOSIT=1
NAS_ID Номер сервера доступа
ACTION_EXPR= Выражение (*). Програма просматривает определённое количество записей лога подключения (LAST_ACTIONS_COUNT) и если под данное выражение попадает логин определённо количество раз (ACTION_COUNT) система делает для данного аккаунта Zap
ACTION_COUNT= Количество найденных попаданий. По умолчанию 20
NEGATIVE_DEPOSIT=1 сбрасывать с линии только должников
LAST_ACTIONS_COUNT= Количество последний записей истории для просмотра. По умолчанию 250.
HANGUP=1 Отключить все активные сессии
LOGIN=1 Логин пользователя для отключения
DAYS2FINISH=xx Дней до завершения услуги
DEBUG=1..6 Режим отладки
help справка

cisco_vlan.pl

Версия: 0.02; от 21.08.2014
cisco_vlan.pl

Утилита создания Vlan на коммутаторах Cisco для модуля Vlan

radtest.sh

abills/libexec/radtest.sh

Консольная утилита тестирования радиус сервера

Пример тестирования авторизации

/usr/abills/libexec/radtest.sh auth -rad -u test -p 123456

Запрос

Sending Access-Request of id 136 to 127.0.0.1 port 1812
        User-Name = "test"
        User-Password = "123456"
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 1
        Message-Authenticator = 0x00000000000000000000000000000000

Ответ радиус сервера

rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=136, length=218

        Filter-Id = "filter"
        Session-Timeout = 360
        Framed-IP-Netmask = 255.255.255.255
        Framed-IP-Address = 192.168.214.3
        mpd-limit = "in#1=all rate-limit 2048000 384000 768000 pass"
        mpd-limit = "out#1=all rate-limit 12288000 2304000 4608000 pass"
        Acct-Interim-Interval = 90
        mpd-table-static = "10=10.20.20.30 6000"
        mpd-table-static = "11=10.20.20.30 5000"

Тестирование RADIUS пакета авторизации

пакет авторизации auth.cisco

        User-Name = "85.132.9.244"
        User-Password = "ISG"
        Framed-IP-Address = 85.132.9.244
        Cisco-Account-Info = "S10.200.28.225"
        NAS-Port-Type = Virtual
        Cisco-NAS-Port = "15/0/6/88"
        NAS-Port = 0
        NAS-Port-Id = "15/0/6/88"
        Service-Type = Outbound-User
        NAS-IP-Address = 62.212.235.190
        Acct-Session-Id = "3ED4EBBE02F8144F"

запуск теста

./radtest.sh auth -rad -rad_file auth.cisco

Запрос авторизации

Sending Access-Request of id 120 to 127.0.0.1 port 1812
        User-Name = "192.168.11.100"
        User-Password = "ISG"
        Framed-IP-Address = 192.168.11.100
        Cisco-Account-Info = "S10.200.28.225"
        NAS-Port-Type = Virtual
        Cisco-NAS-Port = "15/0/6/88"
        NAS-Port = 0
        NAS-Port-Id = "15/0/6/88"
        Service-Type = Outbound-User
        NAS-IP-Address = 192.168.1.1
        Acct-Session-Id = "3ED4EBBE02F8144F"

Ответ RADIUS

rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=120, length=34
        Reply-Message = "Not register"

create_extbills.pl

Версия: 0.2
create_extbills.pl Создание дополнительных счетов для пользователей.
Учтена возможность переноса определённой сумы с основного на дополнительный счёт (переменная $transfer_sum). Если у пользователя больше определённой сумы тогда определённая сума переноситься на доп. счёт с описанием об этом в журнале операций снятия и внесения денег.

ipn_analize.sh

Версия: 0.3
ipn_analize.sh - Дополнительный анализатор flow-tools файлов. Есть возможность выборки суммарного трафика для определённого IP адреса.

dhcp_tools.pl

Версия: 0.7
dhcp_tools.pl Набор дополнительных утилит для работы с DHCP

  • автоматическое занесения IP/MAC адресов пользователей в модуль Dhcphosts.

Работает в двух режимах:

  1. Занесение IP/MAC связок пользователей из файла.

Формат файла:

LOGIN[TAB]IP[TAB]MAC[TAB]PORTS[TAB]NAS_ID[TAB]OPTION_82[TAB]VID[TAB]HOSTNAME
  1. Режим ARP монитора система вытаскивает IP/MAC связки из arp таблицы сравнивает их с онлайн пользователями и заносит в базу
  • Групповой перенос абонентов из одной сети в другую.
# dhcp_tools.pl ADDRESS_SHIFT="NEW_NETWORK_ID:SRC_NET:DST_NET" 
NEW_NETWORK_ID номер в какую сеть перенести абонентов
SRC_NET Поточная сеть абонентов. Маска сети /24 (255.255.255.0)
DST_NET Новая сеть абонентов. Маска сети /24 (255.255.255.0)

Аргументы программы

NETWORK ИД сети для ARG grab.
FILE Режим парсера файла
ADDRESS_SHIFT Перенос абонентов из одной сети в другую
DEBUG Режим отладки. В режиме отладки выше 4 программа показывает действия на выполнения без реального выполнения их.

dv_disable.pl

Версия: 0.5
dv_disable.pl - Блокирует должников

Блокирует должников не плативших определённый период времени (по умолчанию 60 дней). При блокировании должники переводятся в статус «Слишком маленький депозит».

В аргументах скрипта можно указать количество дней с последней оплаты и E-mail адрес администратора для получения отчётов о проведённых операциях.

Аргументы программы можна записать в файл.

DEBUG=0
LAST_PAYMENT_DAY=0

[TP_SUM]
  100=-4
  102=-10
  103=-20
  104=-25

После этого, указать путь через ключ CONFIG_FILE=/path/to/config/file

./dv_disable.pl CONFIG_FILE=dv_disable.ini DEBUG=7 

Все аргументы, записаные в командной строке имеют больший приоритет, тоесть если в вызове сверху указано DEBUG=7, а в файле DEBUG=1, то активным будет значение 7

UID_TP и MIN_SUM записываются в секции [TP_SUM] в формате НОМЕР ТАРИФНОГО ПЛАНА=МАКСИМАЛЬНАЯ СУМА ДОЛГА

Если нет параметра тарифного плана, то он считается равным нулю.

Аргументы:

CONFIG_FILE= Конфигурационный файл
SET_STATUS=1..6 Статус который устаналивается должникам ( по умолчанию: 5 «Слишком маленький депозит»)
LAST_PAYMENT_DAY= Количество дней с момента последней проплаты (60)
SENDMAIL= E-mail администратора для отчёта
DEBUG=1..7 Режим отладки ( при значении 7, только выводит список должников, не отключая)
help Помощь

snmp_control.pl

snmp_control.pl - Управление портами коммутатора (port,vlan,speed) на основе данных модулей Dhcphosts и Dv. Включение отключение портов управление скоростью.

Запуск

snmp_control.pl (ONLINE_ENABLE|ONLINE_DISABLE|HANGUP) %LOGIN %FILTER_ID %PORT

convert_db.sh

Версия: 0.9
convert_db.sh - конвертация базы.

  • Конвертация из latin1 в cp1251. После конвертации не забудте установить правильно переменную /usr/abills/libexec/config.pl
 $conf{dbcharset}='cp1251';
  • конвертация из cp1251 в utf8
# ./convert_db.sh -t utf8

после конвертации

$conf{dbcharset}='utf8';

* конвертация с latin1 в utf8
# ./convert_db.sh -f latin1 -t utf8

Дополнительные параметры программы:

-d название базы данных (по умолчанию abills)
-u пользователь для подключения к базе данных (по умолчанию root)
-p пароль подключения к базе данных
-t кодировка в которую переводим
-f С кодировки
-h Подсказка

traffic_class_add.pl (Фетчер сетей)

Версия: 0.16
traffic_class_add.pl - Скрипт заполнения списка сетей для разных классов трафика.
Скрипт заполняет уже существующие классы трафика.

В переменной %class_source указываются ссылки на файлы с списком адресов

my %class_source = ( 
  # Номера сетей в классах трафика => Алрес в интернете
  2 => 'http://адрес/ua.txt',
  3 => 'http://193.33.236.1/crimea-ix.txt'
 );

скрипт анализирует сети формата:

xxx.xxx.xxx.xxx/xx
xxx.xxx.xxx.xxx/xx 

pppoe_search.pl

pppoe_search.pl - Поиск несанкционированных PPPoE серверов.

Чтобы заработал скрипт нужно добавит в /etc/ppp/ppp.conf

!include /tmp/ppp.conf

Внимание, эта строка НЕ должна начинаться с пробела.

Конвертация адресов в журнал адресов

MySql:

REPLACE INTO streets (name, district_id) select address_street, 1 from users_pi group by 1;
REPLACE INTO builds (street_id, number) select s.id, address_build from users_pi u, streets s 
 WHERE u.address_street=s.name group by address_street, address_build;
UPDATE users_pi pi 
 LEFT JOIN streets s ON (s.name=pi.address_street)
 LEFT JOIN builds b ON (s.id=b.street_id AND b.number=pi.address_build)
 SET pi.location_id=b.id 
 WHERE pi.location_id=0

Включение реестра адресов

$conf{ADDRESS_REGISTER}=1;

Отключения реестра адресов

Иногда бывает ситуации что не удалось нормально сконвертировать адреса та как улицы были прописаны в разном формате или еще по каким то причинам.

Для отключения проверки журнала адресов нужно убрать привязку к точкам подключения

UPDATE users_pi SET location_id=0;

и отключить

$conf{ADDRESS_REGISTER}=0;

Конвертация контактов пользователя в формат новых контактов

/usr/abills/misc/contacts_migrate.pl

Конвертирует старые контакты в новый формат.
Дамп с старыми контактами сохраняется в backup/abills_users_pi-%DATE%.sql.gz

# chmod +x /usr/abills/misc/contacts_migrate.pl
# /usr/abills/misc/contacts_migrate.pl

Скрипт Фильтра негативного депозита для ИПН

ipnfilter.sh - скрипт Фильтра негативного депозита для ИПН

в конфигурационный файл добавляем

$conf{IPN_FILTER}='/usr/abills/libexec/ipnfilter.sh %IP %STATUS \"%FILTER_ID\"';

Загрузка архива базы с удалённого сервера

fetch_backup
Загружает с удалённого сервера последний архив базы


Перед работой с программой нужно создать на удалённом сервере (на сервер с бакапами abills) абонента и загрузить с локального на него сертифика для доступа по ssh без пароля \\. При первом запуске программа проверяет наличие сертификата для доступа к удалённому хосту и IP адрес удалённого хоста. Пользователь по умолчанию abills_admin

запуск программы

# fetch_backup [удалённый сервер]


Тестирование производительности системы

Тест №1 Ubench для Freebsd

Чем больше число в результате тем лучше

cd /usr/ports/benchmarks/ubench && make install
Тест №2 Простой тест на подсчет числа Пи

Чем меньше времени тем лучше
Скрипт:

#!/bin/sh
time echo "scale=5000; 4*a(1)" | bc -l -q
Тест №3 Unixbench 4.1

Чем больше число в результате тем лутше

Установка на примере Debian Linux

 apt-get install gcc g++ time make
 wget http://members.dslextreme.com/users/andylee/unixbench-4.1.0-wht.tar.gz
 tar xzvf unixbench-4.1.0-wht.tar.gz
 cd unixbench-4.1.0-wht-2
 make
 Запуск: ./Run

Установка в Freebsd

cd /usr/ports/benchmarks/unixbench && make install
Запуск: unixbench
Тест №4 Производительность жёстких дисков
# dd if=/dev/zero of=testfile bs=1m count=1024
 1024+0 records in
 1024+0 records out
 1073741824 bytes transferred in 17.577054 secs (61087701 bytes/sec)

Тестирование системы после установки

perldeps.pl

Скрипт, который проверяет установлены ли все необходимые модули для perl.
Умеет устанавливать с помощью нескольких систем сборки:

  • Собирать из портов
  • pkg
  • apt-get
  • yum

Для проверки, запускать с ключом test
Для установки, запустить с одним из:

  • apt-get
  • pkg
  • port
  • yum

post-install.sh

Скрипт, для проверки модулей Perl и корректности значений файла abills/Abills/programs

  • Предложит запустить perldeps.pl, если есть неустановленные модули.
  • Проверяет переменные и файлы описанные в внутренних масивах.
  • Предлагает команды для исправления ошибок, если это возможно.
  • Проверяет соединение с базой.