Перейти к содержимому

Mikrotik. Скрипти. Як получити через телнет з сервера вивід команди.


Рекомендованные сообщения

Всім здорова! Роблю на диплом простенький білінг. Кароч то ніфіга не білінг, а тупо веб інтерфейс, сторінки на .cgi з perl та база mysql. Заповнюєш дані користувача, все пишеться в бд, в іншу бд зберігається команда для мк, закріплення IP+MAC, щось типу:

 

/ip arp add disabled=no  address=192.168.0.200 mac-address=00:00:23:32:23:47 interface=ether5 comment=qwe    

 

на інті ether5 мк звичайно arp-reply-only

потім на лінусі через кронтаб дьоргається perl скріпт, який конектиться по телнеті на мк, і виконує нові команди, старі переносить в іншу таблицю, тіпо як історію.

 

далі я думав що зможу банально викл і вкл доступ бонентам командами такого плану

 

/ip arp set disabled=no  або  /ip arp set disabled=yes   вказуючи дальше дані IP та MAC,

але виявлюєть що обовязково потрібно мати number 

 

[axeopa2@rb_951_2n] > ip arp set 
numbers: 
 
а він завжди дианмічно міняться
Вопшім мені треба зараз з сервака на лінуксі через скрипт дістати вивід команди
 
/ip arp print  where address=192.168.0.200 && mac-address=00:00:23:32:23:45
 
дальше я собі той number якось відділю, і поньому буду рубати юзерів.
 
 
 
якшо когось буде цікавити мій прожект, після захисту думаю зможу поділитись

 

Ссылка на сообщение
Поделиться на других сайтах

пер, я вже зробив, зробив масив, присвоїв йому значення команди,  виглядає на perl так, але то не весь код:

 

 

$mikrotik_ip="192.168.0.1";

$t = new Net::Telnet (
Timeout => 13,
Dump_log => "./mikrotik.log");
 
foreach $mk_ip ($mikrotik_ip){
    $t->open($mk_ip);
    $t->login("billadmin", "billadmin");
   @comm=$t->cmd("/ip arp print where address=192.168.0.200 && mac-address=00:00:23:32:23:45");
    $t->close;
 
 
print @comm;

 

 

 

 

вивід такий:

 

[root@www home]# perl -w script2.pl
 
1  /ip arp add disabled=no  address=192.168.0.200 mac-address=00:00:23:32:23:47 interface=ether5 comment=qwe
Flags: X - disabled, I - invalid, H - DHCP, D - dynamic, P - published
 #   ADDRESS         MAC-ADDRESS       INTERFACE
 0   ;;; jhg
     192.168.0.200   00:00:23:32:23:45 ether5
 
 
дальше нада придумати як дьорути потрібне значення
Ссылка на сообщение
Поделиться на других сайтах

 

Всім здорова! Роблю на диплом простенький білінг. Кароч то ніфіга не білінг, а тупо веб інтерфейс, сторінки на .cgi з perl та база mysql. Заповнюєш дані користувача, все пишеться в бд, в іншу бд зберігається команда для мк, закріплення IP+MAC, щось типу:

 

/ip arp add disabled=no  address=192.168.0.200 mac-address=00:00:23:32:23:47 interface=ether5 comment=qwe    

 

на інті ether5 мк звичайно arp-reply-only

потім на лінусі через кронтаб дьоргається perl скріпт, який конектиться по телнеті на мк, і виконує нові команди, старі переносить в іншу таблицю, тіпо як історію.

 

далі я думав що зможу банально викл і вкл доступ бонентам командами такого плану

 

/ip arp set disabled=no  або  /ip arp set disabled=yes   вказуючи дальше дані IP та MAC,

але виявлюєть що обовязково потрібно мати number 

 

[axeopa2@rb_951_2n] > ip arp set 
numbers: 
 
а він завжди дианмічно міняться

/ip arp get [find address=192.168.1.2]

Ссылка на сообщение
Поделиться на других сайтах

очь частина /ip arp print

 

 7   ;;; jhg
     192.168.0.200   00:00:23:32:23:45 ether5      
де 7 то number
вводжу в консольці
 
:put  [/ip arp get [find address="192.168.0.201"]]
 
то отримую
 
.id=*69;DHCP=false;address=192.168.0.201;comment=kjh;disabled=false;dynamic=false;interface=ether5;invalid=false
;mac-address=00:00:23:32:23:47;published=fals
 
 
а коли вводжу
 
 :put  [/ip arp find address="192.168.0.201"]
 
то отримую 
 
*69
 
**************************************************
Коли вводжу потім в консольці наприклад 
 
ip arp set numbers=*69 disabled=yes
 
воно його виключає. Я на роботі обслуговую ССR, а дома 951 купив для диплому, там 6.5, тіки починаю знайомитись з скриптами на мк.
 
Ті значення ID вони динамічні ? тобто в процесі вони міняються чи ні ?
Изменено пользователем axeopa
Ссылка на сообщение
Поделиться на других сайтах

далі я думав що зможу банально викл і вкл доступ бонентам командами такого плану

/ip arp set disabled=no  або  /ip arp set disabled=yes   вказуючи дальше дані IP та MAC,

А, что фаервол использовать для таких задач уже не модно?  ;)

 

Ті значення ID вони динамічні ? тобто в процесі вони міняються чи ні ?

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

Изменено пользователем jcomm
Ссылка на сообщение
Поделиться на других сайтах

А, что фаервол использовать для таких задач уже не модно?   ;)

 

фаєрвол, це здорово, але там потрібно буде робити два види команд, спочатку на add, а потім на set, а якщо буде на set, то палюбасу треба буде знати той number, бо якщо робити завжди на add, то коли юзера через веб off i on то додаються 2 нові правила, які посуті нічо нефільтрують а тупо засмічцють ланцюжок forward у фаєрволі.

 

Цитата

Ті значення ID вони динамічні ? тобто в процесі вони міняються чи ні ?

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

 

це що додаються то круто, я ж їх зможу з му дьорнути і закинути в базу, потім для формування команд. Мене цікавить чи ці вже що не не міняються. приклад, якщо є id від 1 до 10, я одного юзера видалив, додав нового, чи в нього id буде 11, чи якись на проміжку від 1 до 10, бо власне з полем number прийме значення якесь на проміжку від 1 до 10.

Изменено пользователем axeopa
Ссылка на сообщение
Поделиться на других сайтах

приклад, якщо є id від 1 до 10, я одного юзера видалив, додав нового, чи в нього id буде 11, чи якись на проміжку від 1 до 10,

Этого я не знаю и не морочу голову о хранении id в БД. Концепция работы у меня такова такова:

1. Берём с микротика id записи по какому-либо уникальному параметру (например, логин пользователя)

2а. Если записи нет (в результате пусто) - она должна быть создана (add)

2b. Если запись есть (в результате, например, *86) - надо обновить запись (set)

 

[-] - Одна лишняя команда, по сравнению с вашей реализацией,

[+] - Нет головной боли при хранении актуальных id в БД

Изменено пользователем jcomm
Ссылка на сообщение
Поделиться на других сайтах

фаєрвол, це здорово, але там потрібно буде робити два види команд, спочатку на add, а потім на set, а якщо буде на set, то палюбасу треба буде знати той number, бо якщо робити завжди на add, то коли юзера через веб off i on то додаються 2 нові правила, які посуті нічо нефільтрують а тупо засмічцють ланцюжок forward у фаєрволі

Эмм.. Вы немного заблуждаетесь. Есть такая вещь в MikroTik, Address List зовётся. К примеру, его можно использовать так:

/ip firewall filter add chain=forward action=accept in-interface="LAN" out-interface="WAN" src-address-list="ALLOW"
/ip firewall filter add chain=forward action=accept in-interface="WAN" out-interface="LAN" dst-address-list="ALLOW"

Это добавляется через консоль - правила ограничения доступа. Обратите внимание на параметры src-address-list и dst-address-list. А потом для разрешения доступа вы создаёте запись в адрес листе, а для отключения делаете set disabled=yes или удаляете ее вообще:

/ip firewall address-list add address=192.168.1.2 list="ALLOW" disabled=no

Это все команды через консоль для примера, а на API, я думаю, что вы сможете сами переделать...

Изменено пользователем jcomm
Ссылка на сообщение
Поделиться на других сайтах
src-address-list="ALLOW"

то я знаю за address-list, схема така що створюється адрес ліст певних групи IP, і вже ним маніпулюється у FW. Мені ж потрібно було, щоб кожною IP можна було окремо маніпулювати. Я це зробив, мені получилось, зараз воно працює так як я хотів.

Принцип такий, на *.cgi сторінці запонюєш форму з макою юзвєра, на МК виконуються 2 команди:

 

/ip arp add disabled=no  address=192.168.5.101 mac-address=00:00:23:32:23:47 interface=ether5 comment=login
/ip dhcp-server lease add server=DHCP_lan5 address=192.168.5.101 mac-address=00:00:23:32:23:47 comment=login

 

все юзверь має доступ в нет. Якщо треба викл/вкл заходиш на іншу *.cgiсторінку, там жмеш ena | disa, формується і додається в crond команда яка його буде ena | disa :

/ip arp set disabled=yes address=192.168.5.101 mac-address=00:00:23:32:23:47 comment=login numbers=*b
 
 

вот, і воно собственно працює, і в мускл пише в окрему табличку всі команди які на мк були відправленні. Згідний що рішення таке собі, на диплом піде на ура. І впринципі для маленької мережі на абонентів так 50-100 його можна використовувати, якщо доробити щоб автоматом виключались користувачі. Ще я туда поставив nfsen з плагіном surfmap. І зробив щоб через веб відправлялись смс на певний номер, через 3g модем huawei, працює то банально просто, через демон sendsms.

Изменено пользователем axeopa
Ссылка на сообщение
Поделиться на других сайтах

то я знаю за address-list, схема така що створюється адрес ліст певних групи IP, і вже ним маніпулюється у FW. Мені ж потрібно було, щоб кожною IP можна було окремо маніпулювати. Я це зробив, мені получилось, зараз воно працює так як я хотів.

Вы ошибаетесь! Несмотря на то, что в адрес листе несколько айпишек, то правила фаервола исполняются отдельно для каждой! А управлять доступом к интернету с помощью ARP - это как использовать вилку, чтобы резать хлеб, вроде можно, но...

Изменено пользователем jcomm
Ссылка на сообщение
Поделиться на других сайтах

Ну чому Ви так кажете, як на мене то класно в тому плані що по мережі небігає всяке сміття, а авторизація відбувається на канальному рівні OSI

Ссылка на сообщение
Поделиться на других сайтах

 

Ну чому Ви так кажете

вочевидь, тому, що знає про що каже.

 

 

як на мене то класно в тому плані що по мережі небігає всяке сміття, а авторизація відбувається на канальному рівні OSI

не бачу жодного взаємозв'язку грамотної сегментації мережі та використання завідомо наркоманських рішень.

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...