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

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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

Table of Contents

arping.pl

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

Code Block
languagebash
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
languagebash
cd /usr/abills/libexec/
ln -s ../Abills/modules/Dv/arping.pl .
chmod +x arping.pl

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

Code Block
languagebash
$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
languagebash
./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 для модуля Internet+.

radtest.sh

abills/libexec/radtest.sh

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

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

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

Запрос

Code Block
languagebash
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
languagebash
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
languagebash
        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
languagebash
./radtest.sh auth -rad -rad_file auth.cisco

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

Code Block
languagebash
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
languagebash
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
languagebash
DEBUG=0
LAST_PAYMENT_DAY=0

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

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

Code Block
languagebash
./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
languagebash
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
languagebash
conf{dbcharset}='cp1251';
  • конвертация из cp1251 в utf8

    Code Block
    languagebash
    # ./convert_db.sh -t utf8

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

    Code Block
    languagebash
    $conf{dbcharset}='utf8';
    
    * конвертация с latin1 в utf8


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


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


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

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

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

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

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

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


pppoe_search.pl

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

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

Code Block
languagebash
!include /tmp/ppp.conf


Warning

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


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

MySql:

Code Block
languagebash
REPLACE INTO districts (name, zip, city) 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)
SELECT s.id, MAX(address_build) 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
languagebash
$conf{ADDRESS_REGISTER}=1;

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

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

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

Code Block
languagebash
UPDATE users_pi SET location_id=0;

и отключить

Code Block
languagebash
$conf{ADDRESS_REGISTER}=0;


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

/usr/abills/misc/contacts_migrate.pl

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

Code Block
languagebash
chmod +x /usr/abills/misc/contacts_migrate.pl
/usr/abills/misc/contacts_migrate.pl


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

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

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

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


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

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


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

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

Code Block
languagebash
fetch_backup [удалённый сервер]


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

Тест №1 Ubench для Freebsd

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

Code Block
languagebash
cd /usr/ports/benchmarks/ubench && make install

Тест №2 Простой тест на подсчет числа Пи

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

Code Block
languagebash
#!/bin/sh
time echo "scale=5000; 4*a(1)" | bc -l -q

Тест №3 Unixbench 4.1

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

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

Code Block
languagebash
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
languagebash
cd /usr/ports/benchmarks/unixbench && make install
Запуск: unixbench

Тест №4 Производительность жёстких дисков

Code Block
languagebash
# 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, если есть неустановленные модули.

  • Проверяет переменные и файлы описанные в внутренних массивах.

  • Предлагает команды для исправления ошибок, если это возможно.

  • Проверяет соединение с базой.