Все дополнения рассчитаны для установки в каталог /usr/abills/misc.
Table of Contents |
---|
arping.pl
Универсальная внешняя утилита для ARP ping. Пока работает только с серверами доступа Mikrotik
/usr/abills/Abills/modules/Dv/arping.pl
Code Block | ||
---|---|---|
| ||
Usage: ./arping.pl ACCT_SESSION_ID=81809614 [DEBUG=1] [ L2=1 [ NAS_TYPES=mikrotik,mikrotik_dhcp ]] DEBUG - Выводит отладочную информацию L2 - Не использовать NAS сесии, а вычислить NAS, к которому привязан пул в том же влане, что и хост сесии NAS_TYPES - Типы серверов доступа, которые могут выполнить arping NO_ARP - Использовать ping, не использовать arp ping |
Установка:
Code Block | ||
---|---|---|
| ||
cd /usr/abills/libexec/ ln -s ../Abills/modules/Dv/arping.pl . chmod +x arping.pl |
Дописать в config.pl, чтоб в онлайне возле сессии появилась кнопка «ARPPING»
Code Block | ||
---|---|---|
| ||
$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 дней.
Code Block | ||
---|---|---|
| ||
./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 | Логин пользователя для отключения |
DURATION= | фильтр сессий по времени в секундах пример (больше 120 секунд) DURATION='>120' |
DAYS2FINISH=xx | Дней до завершения услуги |
DEBUG=1..6 | Режим отладки |
help | справка |
HANGUP_PERIOD=1 | Включение скидывания абонентов только у которых заполнено информационное поле_hangup_period и выбрано время скидывания. |
TURBO=1 | Программа проверяет турбо сессии и если они истекли принудительно закрывает их. Можно установить в крон каждые 10 минут |
cisco_vlan.pl
Версия: 0.02; от 21.08.2014
cisco_vlan.pl
Утилита создания Vlan на коммутаторах Cisco для модуля Internet+.
radtest.sh
abills/libexec/radtest.sh
Консольная утилита тестирования радиус сервера.
Пример тестирования авторизации
Code Block | ||
---|---|---|
| ||
/usr/abills/libexec/radtest.sh auth -rad -u test -p 123456 |
Запрос
Code Block | ||
---|---|---|
| ||
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 |
Ответ радиус сервера
Code Block | ||
---|---|---|
| ||
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
Code Block | ||
---|---|---|
| ||
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" |
запуск теста
Code Block | ||
---|---|---|
| ||
./radtest.sh auth -rad -rad_file auth.cisco |
Запрос авторизации
Code Block | ||
---|---|---|
| ||
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
Code Block | ||
---|---|---|
| ||
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 адреса.
internet_disable.pl
Версия: 0.5
internet_disable.pl - блокирует должников.
Блокирует должников не плативших определённый период времени (по умолчанию 60 дней). При блокировании должники переводятся в статус «Слишком маленький депозит».
В аргументах скрипта можно указать количество дней с последней оплаты и E-mail адрес администратора для получения отчётов о проведённых операциях.
Аргументы программы можно записать в файл.
Code Block | ||
---|---|---|
| ||
DEBUG=0 LAST_PAYMENT_DAY=0 [TP_SUM] 100=-4 102=-10 103=-20 104=-25 |
После этого, указать путь через ключ CONFIG_FILE=/path/to/config/file
Code Block | ||
---|---|---|
| ||
./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) на основе данных модуля Internet+. Включение отключение портов управление скоростью.
Запуск
Code Block | ||
---|---|---|
| ||
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
Code Block | ||
---|---|---|
| ||
conf{dbcharset}='cp1251'; |
конвертация из cp1251 в utf8
Code Block language bash # ./convert_db.sh -t utf8
после конвертации
Code Block language bash $conf{dbcharset}='utf8'; * конвертация с latin1 в utf8
Дополнительные параметры программы:d Название базы данных (по умолчанию abills) -u Пользователь для подключения к базе данных (по умолчанию root) -p Пароль подключения к базе данных -t Кодировка, в которую переводим -f С кодировки -h Подсказка
traffic_class_add.pl (Фетчер сетей)
Версия: 0.16
traffic_class_add.pl - скрипт заполнения списка сетей для разных классов трафика.
Скрипт заполняет уже существующие классы трафика.
По умолчанию скрипт заносит UA-IX в 2 класс трафика
В переменной %class_source указываются ссылки на файлы со списком адресов
Code Block | ||
---|---|---|
| ||
my %class_source = ( # Номера сетей в классах трафика => Алрес в интернете 2 => 'http://адрес/ua.txt', 3 => 'http://193.33.236.1/crimea-ix.txt' ); |
скрипт анализирует сети формата:
Code Block | ||
---|---|---|
| ||
скрипт анализирует сети формата: |
pppoe_search.pl
pppoe_search.pl - поиск несанкционированных PPPoE серверов.
Чтобы заработал скрипт нужно добавит в /etc/ppp/ppp.conf
Code Block | ||
---|---|---|
| ||
!include /tmp/ppp.conf |
Warning |
---|
Внимание, эта строка НЕ должна начинаться с пробела. |
Конвертация адресов в журнал адресов
MySql:
Code Block | ||
---|---|---|
| ||
REPLACE INTO districts (name, zip, city, comments) SELECT city, zip, city, '' FROM users_pi GROUP BY 1; REPLACE INTO streets (district_id, name) SELECT districts.id, users_pi.address_street FROM users_pi INNER JOIN districts ON (users_pi.city=districts.name) GROUP BY users_pi.city, users_pi.address_street; REPLACE INTO builds (street_id, number, added) SELECT s.id, MAX(address_build), NOW() FROM users_pi u INNER JOIN streets s ON (u.address_street=s.name) INNER JOIN districts ON (s.district_id=districts.id AND u.city=districts.name) GROUP BY u.city, u.address_street, u.address_build; UPDATE users_pi LEFT JOIN districts ON (districts.name=users_pi.city) LEFT JOIN streets ON (districts.id=streets.district_id AND streets.name=users_pi.address_street) LEFT JOIN builds ON (streets.id=builds.street_id AND builds.number=users_pi.address_build AND districts.name=users_pi.city) SET users_pi.location_id=builds.id WHERE users_pi.location_id=0; |
Включение реестра адресов
Code Block | ||
---|---|---|
| ||
$conf{ADDRESS_REGISTER}=1; |
Отключения реестра адресов
Иногда возникают ситуации, что не удалось нормально сконвертировать адреса, так как улицы были прописаны в разном формате или еще по каким то причинам.
Для отключения проверки журнала адресов нужно убрать привязку к точкам подключения
Code Block | ||
---|---|---|
| ||
UPDATE users_pi SET location_id=0; |
и отключить
Code Block | ||
---|---|---|
| ||
$conf{ADDRESS_REGISTER}=0; |
Конвертация контактов пользователя в формат новых контактов
/usr/abills/misc/contacts_migrate.pl
Конвертирует старые контакты в новый формат (Контакты абонента).
Дамп с старыми контактами сохраняется в backup/abills_users_pi-%DATE%.sql.gz
Code Block | ||
---|---|---|
| ||
chmod +x /usr/abills/misc/contacts_migrate.pl /usr/abills/misc/contacts_migrate.pl |
Скрипт Фильтра негативного депозита для ИПН
ipnfilter.sh - скрипт Фильтра негативного депозита для ИПН
в конфигурационный файл добавляем
Code Block | ||
---|---|---|
| ||
$conf{IPN_FILTER}='/usr/abills/libexec/ipnfilter.sh %IP %STATUS \"%FILTER_ID\"'; |
Загрузка архива базы с удалённого сервера
fetch_backup
Загружает с удалённого сервера последний архив базы.
Перед работой с программой нужно создать на удалённом сервере (на сервер с бакапами abills) абонента и загрузить с локального на него сертификат для доступа по ssh без пароля \\. При первом запуске программа проверяет наличие сертификата для доступа к удалённому хосту и IP адрес удалённого хоста. Пользователь по умолчанию abills_admin
Запуск программы
Code Block | ||
---|---|---|
| ||
fetch_backup [удалённый сервер] |
Тестирование производительности системы
Тест №1 Ubench для Freebsd
Чем больше число в результате тем лучше
Code Block | ||
---|---|---|
| ||
cd /usr/ports/benchmarks/ubench && make install |
Тест №2 Простой тест на подсчет числа Пи
Чем меньше времени тем лучше
Скрипт:
Code Block | ||
---|---|---|
| ||
#!/bin/sh time echo "scale=5000; 4*a(1)" | bc -l -q |
Тест №3 Unixbench 4.1
Чем больше число в результате тем лучше
Установка на примере Debian Linux
Code Block | ||
---|---|---|
| ||
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
Code Block | ||
---|---|---|
| ||
cd /usr/ports/benchmarks/unixbench && make install Запуск: unixbench |
Тест №4 Производительность жёстких дисков
Code Block | ||
---|---|---|
| ||
# 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, если есть неустановленные модули.
Проверяет переменные и файлы описанные в внутренних массивах.
Предлагает команды для исправления ошибок, если это возможно.
Проверяет соединение с базой.
Перенос телефонов с информационных полей
%_PHONE_1% | информационное поле, которое отвечает за телефон |
---|---|
%TYPE% | тип поля, которое отвечает за Телефон или Мобильный телефон |
Code Block | ||
---|---|---|
| ||
INSERT INTO users_contacts (uid, type_id, value, priority) SELECT up2.uid, %TYPE%, up2.%_PHONE_1%, (SELECT count(*) FROM users_contacts uc WHERE uc.uid=up2.uid) FROM users_pi up2 WHERE up2.%_PHONE_1%<>'' AND CONCAT(up2.uid, ' - ', up2.%_PHONE_1%) NOT IN ( SELECT CONCAT(uc.uid, ' - ', uc.value) FROM users_contacts uc LEFT JOIN users_pi up ON(up.uid=uc.uid) WHERE up.%_PHONE_1%<>'' AND up.uid=uc.uid AND uc.value<>'' ) |