При помощи скриптов на Perl можно взаимодействовать с устройствами Mikrotik RouteBoard RB493AH, Mikrotik RouterBoard 1100, Mikrotik RouterBoard 750 и другими. В этой статье мы будем добавлять пользователей. Perl скрипт будет взаимодействовать с Mikrotik Router OS по SSH протоколу, поэтому нужно установить perl модуль.
Рис.1. Установка модуля PERL.
Команда whereis p5-Net-SSH-Perl отобразит путь, где в портах находится данный модуль.
Переходим в нужную директорию cd /usr/ports/net/p5-Net-SSH-Perl
Запускаем установку: make install clean.
Рис.2. Создаем скрипт.
Командой nano mikrotik.pl – открываем файл, в котором будем писать наш скрипт.
Скрипт на Perl для добавления пользователей в Mikrotik Routerboard выглядит так:
#!/usr/bin/perl -w
use Net::SSH::Perl;
my $host = '192.168.4.246';
my $user = 'asp';
my $pass = 'asp';
my $ssh = Net::SSH::Perl->new($host, protocol => '2,1', debug => 1);
$ssh->login($user, $pass);
my $username = 'user';
my $userip = '172.16.3.2';
$ssh->cmd("/ppp secret add name=$username password=$userpassword service=any profile=default local=172.16.1.1 remote=$userip");
my $k = 'k';
my $speed = '1024';
$ssh->cmd("/queue simple add name=$username target-address=$userip max-limit=$speed$k/$speed$k");
Разберем скрипт по частям:
use Net::SSH::Perl; - подключаем Perl модуль, который будет работать с ssh протоколом.
my $host = '192.168.4.246'; - создаем переменную host, которой будет присвоен ip-адрес устройства Mikrotik.
my $user = 'asp'; - создаем переменную user и заносим имя администратора, которому разрешено подключаться по ssh протоколу к Mikrotik.
my $pass = 'asp'; - пароль администратора Mikrotik.
my $ssh = Net::SSH::Perl->new($host, protocol => '2,1', debug => 1);
$ssh->login($user, $pass); - выполняем подключение к Mikrotik.
my $username = 'user'; - создаем переменную username, в которой будет храниться имя создаваемого пользователя;
my $userpassword = 'user'; - создаем переменную userpassword, в которой будет храниться пароль создаваемого пользователя;
my $userip = '172.16.3.2'; - создаем переменную userip, в которой будет храниться IP адрес, нового пользователя.
$ssh->cmd("/ppp secret add name=$username password=$userpassword service=any profile=default local=172.16.1.1 remote=$userip"); - команда для создания нового пользователя на Mikrotik Routerboard, в которую будут подставлены переменные.
my $k = 'k'; - создаем переменную k. Она будет отображать единицы измерения.
my $speed = '1024'; - создаем переменную speed. В неё заносим значение скорости работы для нового пользователя.
$ssh->cmd("/queue simple add name=$username target-address=$userip max-limit=$speed$k/$speed$k"); - команда выполняемая на Mikrotik Routerboard, которая создаёт правило шейпера для нового пользователя.
Рис.3. Запуск скрипта.
Для запуска скрипта наберем в консоли: perl.mikrotik.pl
Рис.4. Работа скрипта.
Работа скрипта будет отображена на экране:
Рис.5. Результат выполнения скрипта.
Перейдем в Mikrotik RouteBoard RB493AH, для того чтобы убедиться, что скрипт выполнил все действия.
В дальнейшем можно добавить в перл скрипт возможность подключения к базе данных, из которых он будет извлекать данные о пользователях.
Евгений Рудченко специально для ASP24.





