Перейти до

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 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...