Обнаружена блокировка рекламы: Наш сайт существует благодаря показу онлайн-рекламы нашим посетителям. Пожалуйста, подумайте о поддержке нас, отключив блокировщик рекламы на нашем веб-сайте.
Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
-
podarok66
- Модератор
- Сообщения: 3947
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
15 окт 2020, 21:19
Завёл я скрипт. Отработал он нормально. Вот вывод.
Код: Выделить всё
NUMBER INTERFACE HOST NAME MAC ADDRESS IP ADDRESS NETWORK COMMENT
1 ether1 MB2020RU_1D2F41 00:80:F0:1D:2F:41 192.168.88.206 bridge Printer
2 ether1 hEX_POE 64:D1:54:3C:01:68 192.168.88.40 bridge
3 ether1 wAP 64:D1:54:FF:57:66 192.168.88.50 bridge
4 ether1 Papa D4:3D:7E:E3:09:11 192.168.88.250 bridge My PC
5 ether1 RedmiNote4-Redmi EC:D0:9F:3A:45:64 192.168.88.254 bridge My phone
6 ether3 hEX 64:D1:54:A1:64:E7 192.168.88.1/24 bridge mAP
7 ether3 6C:3B:6B:FA:02:6B 192.168.88.100 bridge
8 ether3 >> IP/ARP << 6C:3B:6B:FA:02:6A 192.168.88.100 bridge MikroTik-mAP
9 ether4 DESKTOP-LQ57K59 00:F1:F3:03:2E:C6 192.168.88.203 bridge Sava
10 ether4 hEX 64:D1:54:A1:64:E8 192.168.88.1/24 bridge Sava comp
11 ether5 >> IP/ARP << 60:2E:20:1F:AF:9D 10.201.7.254 GATEWAY
12 ether5 hEX 64:D1:54:A1:64:E9 10.201.7.18/24 10.201.7.0 WAN
13 bridge >> IP/ARP << C4:6E:1F:02:05:2F 192.168.88.250 My komp
14 bridge >> IP/ARP << 00:26:B6:E8:EE:DC 192.168.88.230 Sony note
15 bridge >> IP/ARP << E8:4E:06:08:89:30 192.168.88.240 Netbook
16 bridge >> IP/ARP << 28:39:5E:42:EC:8F 192.168.88.210 Samsung_TV
17 bridge >> IP/ARP << 48:88:CA:C8:03:A6 192.168.88.180 Kseniya phone
18 bridge >> IP/ARP << 04:B1:67:21:1B:F0 192.168.88.208 Yuliya phone
19 bridge >> IP/ARP << 00:0C:42:6C:10:92 192.168.88.60 MikroTik-RB433UAH
20 bridge >> IP/ARP << EC:D0:9F:0F:FA:84 192.168.88.205 Pashka
21 bridge >> IP/ARP << 1C:B7:2C:EB:E4:74 192.168.88.202 Papa planshet
22 bridge >> IP/ARP << 00:03:AB:E5:15:32 192.168.88.248 HT20
23 bridge >> IP/ARP << 00:8E:05:00:94:7B 192.168.88.207 Onda
24 bridge >> IP/ARP << 20:A6:0C:11:64:45 192.168.88.187 Mama phone
25 bridge >> IP/ARP << F4:60:E2:A2:34:74 192.168.88.184 Redmi 6
26 bridge >> IP/ARP << C0:B6:58:4E:29:81 192.168.88.183 Anna
27 bridge >> IP/ARP << 80:35:C1:4A:43:68 192.168.88.182 Kirill
28 bridge >> IP/ARP << 94:E0:D6:5E:99:C5 192.168.88.171 TV_box
29 bridge >> IP/ARP << 20:34:FB:B7:BC:AF 192.168.88.151
30 bridge >> IP/ARP << 74:23:44:1D:E2:85 192.168.88.163 Lena phone
31 bridge hEX 64:D1:54:A1:64:E5 192.168.88.1/24 192.168.88.0
32 loopback hEX 5A:21:87:4D:27:23 10.255.255.1/32 10.255.255.1
33 ovpn-out-1195-DO hEX 02:0E:38:68:2C:51 10.12.0.2/32 10.12.0.1 No activity dublicat canal to Europ
34 ovpn-out-DO hEX 02:0E:38:68:2C:51 10.9.0.2/32 10.9.0.1 General canal to Europa
35 sstp-client-mic hEX 10.10.10.1/32 10.10.10.2 To Papa flat tunnel
Что интересно. Под HOST NAME с обозначением >> IP/ARP << у меня высветило не присоединённые сейчас устройства, а то, что у меня прибито в ARP намертво для своих целей. Я не думаю, что эта инфа должна была выпадать при срабатывании скрипта. Наверное всё же актуальны именно активные на данный момент хосты. Ну и туннель ipv4 to ipv6 вообще не определяется и не виден. Простите за въедливость

Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
-
drpioneer
- Сообщения: 46
- Зарегистрирован: 30 май 2013, 10:20
17 окт 2020, 00:02
Добрый день.
podarok66 писал(а): ↑15 окт 2020, 21:19
Под HOST NAME с обозначением >> IP/ARP << у меня высветило не присоединённые сейчас устройства, а то, что у меня прибито в ARP намертво для своих целей. Я не думаю, что эта инфа должна была выпадать при срабатывании скрипта. Наверное всё же актуальны именно активные на данный момент хосты.
У каждой записи в ARP листе имеются флаги: X - disabled, I - invalid, H - DHCP, D - dynamic, P - published, C - complete.
В очередной версии скрипта я ограничил выборку ARP записей флагом "complete", но я не уверен в правильности такой выборки. Проверьте, насколько результат работы этой версии скрипта соответствует Вашим ожиданиям?
podarok66 писал(а): ↑15 окт 2020, 21:19
Ну и туннель ipv4 to ipv6 вообще не определяется и не виден.
Пока не добрался.
podarok66 писал(а): ↑15 окт 2020, 21:19
Простите за въедливость
Ну а как иначе-то? Вроде так и должно быть... :)
Ниже очередной подправленный вариант скрипта:
Код: Выделить всё
# Script for building a network table by drPioneer
# https://forummikrotik.ru/viewtopic.php?p=70575
# tested on ROS 6.47
# updated 2020/10/17
# interface list
:global interfaceIndexArray 0;
:global interfaceArray {"";"";"";""};
foreach interfaceIndex in=[ /interface find running=yes; ] do={
:local interfaceName ([ /interface get $interfaceIndex name; ]);
:local interfaceHost ([ /system resource get board-name; ]);
:local interfaceMAC ([ /interface get $interfaceIndex mac-address; ]);
:local interfaceComment ([ /interface get $interfaceIndex comment; ]);
:set ($interfaceArray->$interfaceIndexArray) {$interfaceName;$interfaceHost;$interfaceMAC;$interfaceComment};
:set interfaceIndexArray ($interfaceIndexArray + 1);
}
:set interfaceIndexArray ($interfaceIndexArray - 1);
# interface bridge host list
:global bridgeHostIndexArray 0;
:global bridgeHostArray {"";"";"";"";"";""};
foreach bridgeHost in=[ /interface bridge host find; ] do={
:do {
:local hostInterface ([ /interface bridge host get $bridgeHost on-interface; ]);
:local hostMAC ([ /interface bridge host get $bridgeHost mac-address; ]);
:local hostBridge ([ /interface bridge host get $bridgeHost bridge; ]);
:local hostComment ("");
:local hostName ("");
:local hostIP ("");
if ([ /interface bridge host get $bridgeHost local; ] = true) do={
:set hostName ([ /system resource get board-name; ]);
:set hostIP ([ /ip address get [ find interface=$hostBridge ] address; ]);
} else={
:do {
:set hostName ([ /ip dhcp-server lease get [ find mac-address=$hostMAC ] host-name; ]);
:set hostIP ([ /ip dhcp-server lease get [ find mac-address=$hostMAC ] address; ]);
:set hostComment ([ /ip dhcp-server lease get [ find mac-address=$hostMAC ] comment; ]);
} on-error={
:set hostName ([ /ip dhcp-server lease get [ find mac-address=$hostMAC dynamic=yes ] host-name; ]);
:set hostIP ([ /ip dhcp-server lease get [ find mac-address=$hostMAC dynamic=yes ] address; ]);
}
}
:set ($bridgeHostArray->$bridgeHostIndexArray) {$hostInterface;$hostName;$hostMAC;$hostIP;$hostBridge;$hostComment};
:set bridgeHostIndexArray ($bridgeHostIndexArray + 1);
} on-error={ }
}
:set bridgeHostIndexArray ($bridgeHostIndexArray - 1);
# ip address list
:global ipAddressIndexArray 0;
:global ipAddressArray {"";"";"";""};
foreach ipAddress in=([ /ip address find; ]) do={
:local ipAddressInterface ([ /ip address get $ipAddress interface; ]);
:local ipAddressIP ([ /ip address get $ipAddress address; ]);
:local ipAddressNetwork ([ /ip address get $ipAddress network; ]);
:local ipAddressComment ([ /ip address get $ipAddress comment; ]);
:set ($ipAddressArray->$ipAddressIndexArray) {$ipAddressInterface;$ipAddressIP;$ipAddressNetwork;$ipAddressComment};
:set ipAddressIndexArray ($ipAddressIndexArray + 1);
}
:set ipAddressIndexArray ($ipAddressIndexArray - 1);
# ip arp list
:global ipArpIndexArray 0;
:global ipArpArray {"";"";"";"";""};
foreach ipArp in=([ /ip arp find complete=yes; ]) do={
:local ipArpInterface ([ /ip arp get $ipArp interface; ]);
:local ipArpMACAddress ([ /ip arp get $ipArp mac-address; ]);
:local ipArpIP ([ /ip arp get $ipArp address; ]);
:local ipArpComment ([ /ip arp get $ipArp comment; ]);
:local ipArpNetwork ("");
:do {
:set ipArpNetwork ([ /ip dhcp-client get [find interface=$ipArpInterface ] gateway ]);
} on-error={ }
if ($ipArpNetwork = $ipArpIP) do={ :set ipArpNetwork ("GATEWAY"); }
:local equalMACAddress (false);
for i from=0 to=$bridgeHostIndexArray do={
:local findDestination [:find key=($ipArpMACAddress) in=($bridgeHostArray->$i)];
if ([:tostr [$findDestination]] != "") do={ :set equalMACAddress (true); }
}
if ($equalMACAddress = false) do={
:do {
if ([ /interface bridge host get [ find mac-address=$ipArpMACAddress ] on-interface; ] != "") do={
:set ipArpNetwork ($ipArpInterface);
:set ipArpInterface ([ /interface bridge host get [ find mac-address=$ipArpMACAddress ] on-interface; ]);
}
} on-error={ }
:set ($ipArpArray->$ipArpIndexArray) {$ipArpInterface;$ipArpMACAddress;$ipArpIP;$ipArpNetwork;$ipArpComment};
:set ipArpIndexArray ($ipArpIndexArray + 1);
}
}
:set ipArpIndexArray ($ipArpIndexArray - 1);
# build new list
:global newIndexArray 2;
:global newArray {"";"";"";"";"";"";""};
:set ($newArray->0) {"NUMBER";"INTERFACE";"HOST NAME";"MAC ADDRESS";"IP ADDRESS";"NETWORK";"COMMENT"};
:set ($newArray->1) {"";"";"";"";"";"";""};
for i from=0 to=$interfaceIndexArray do={
for j from=0 to=$bridgeHostIndexArray do={
:local findDestination [:find key=($bridgeHostArray->$j->0) in=($interfaceArray->$i)];
if ([:tostr [$findDestination]] != "" && ($bridgeHostArray->$j->4) != ($bridgeHostArray->$j->0)) do={
if (($bridgeHostArray->$j->2) = ($interfaceArray->$i->2)) do={
:set ($newArray->$newIndexArray) {$newIndexArray-1;($bridgeHostArray->$j->0);($bridgeHostArray->$j->1);($bridgeHostArray->$j->2);($bridgeHostArray->$j->3);($bridgeHostArray->$j->4);($interfaceArray->$i->3)};
} else={
:set ($newArray->$newIndexArray) {$newIndexArray-1;($bridgeHostArray->$j->0);($bridgeHostArray->$j->1);($bridgeHostArray->$j->2);($bridgeHostArray->$j->3);($bridgeHostArray->$j->4);($bridgeHostArray->$j->5)};
}
:set newIndexArray ($newIndexArray + 1);
}
}
for j from=0 to=$ipArpIndexArray do={
:local findDestination [:find key=($ipArpArray->$j->0) in=($interfaceArray->$i)];
if ([:tostr [$findDestination]] != "") do={
:set ($newArray->$newIndexArray) {$newIndexArray-1;($ipArpArray->$j->0);" >> IP/ARP <<";($ipArpArray->$j->1);($ipArpArray->$j->2);($ipArpArray->$j->3);($ipArpArray->$j->4)};
:set newIndexArray ($newIndexArray + 1);
}
}
for j from=0 to=$ipAddressIndexArray do={
:local findDestination [:find key=($interfaceArray->$i->0) in=($ipAddressArray->$j)];
if ([:tostr [$findDestination]] != "") do={
:set ($newArray->$newIndexArray) {$newIndexArray-1;($interfaceArray->$i->0);($interfaceArray->$i->1);($interfaceArray->$i->2);($ipAddressArray->$j->1);($ipAddressArray->$j->2);($interfaceArray->$i->3)};
:set newIndexArray ($newIndexArray + 1);
}
}
}
:set newIndexArray ($newIndexArray - 1);
# list output to terminal
for i from=0 to=$newIndexArray do={
:set ($newArray->$i->0) ([:pick [:tostr [($newArray->$i->0 . " ")]] 0 6 ]);
:set ($newArray->$i->1) ([:pick [:tostr [($newArray->$i->1 . " ")]] 0 21 ]);
:set ($newArray->$i->2) ([:pick [:tostr [($newArray->$i->2 . " ")]] 0 25 ]);
:set ($newArray->$i->3) ([:pick [:tostr [($newArray->$i->3 . " ")]] 0 19 ]);
:set ($newArray->$i->4) ([:pick [:tostr [($newArray->$i->4 . " ")]] 0 20 ]);
:set ($newArray->$i->5) ([:pick [:tostr [($newArray->$i->5 . " ")]] 0 17 ]);
:set ($newArray->$i->6) ([:pick [:tostr [($newArray->$i->6 . " ")]] 0 35 ]);
:put (($newArray->$i->0)." ".($newArray->$i->1)." ".($newArray->$i->2)." ".($newArray->$i->3)." ".($newArray->$i->4)." ".($newArray->$i->5)." ".($newArray->$i->6));
}
# clearing variables
:set interfaceIndexArray (:);
:set interfaceArray (:);
:set bridgeHostIndexArray (:);
:set bridgeHostArray (:);
:set ipAddressIndexArray (:);
:set ipAddressArray (:);
:set ipArpIndexArray (:);
:set ipArpArray (:);
:set newIndexArray (:);
:set newArray (:);
Последний раз редактировалось
drpioneer 20 фев 2021, 08:52, всего редактировалось 2 раза.
-
yurchenkoyuriy
- Сообщения: 3
- Зарегистрирован: 08 фев 2021, 20:45
09 фев 2021, 17:55
Вау! Вот это работа!
А чтобы результат отправить в телегу, надо убрать вывод в терминал и добавить параметры отправки?
ps.. Другую инфу в телегу умею отправлять
-
GRISHA765
- Сообщения: 1
- Зарегистрирован: 01 ноя 2020, 18:18
11 фев 2021, 18:46
Хотелось бы такойже скрипт для телеграмма. А вот как сделать так я незнаю.
-
Virtue
- Сообщения: 91
- Зарегистрирован: 07 мар 2014, 10:17
11 фев 2021, 23:52
yurchenkoyuriy писал(а): ↑09 фев 2021, 17:55
А чтобы результат отправить в телегу
GRISHA765 писал(а): ↑11 фев 2021, 18:46
Хотелось бы такойже скрипт для телеграмма. А вот как сделать так я незнаю.
дык тут знать то много и не нада, результаты данного скрипта записываем в переменную, содержимое данной переменной отправляем в телегу например простым скриптом
telega_test из моей темы
управление с телеги
-
yurchenkoyuriy
- Сообщения: 3
- Зарегистрирован: 08 фев 2021, 20:45
19 фев 2021, 14:43
Virtue писал(а): ↑11 фев 2021, 23:52
yurchenkoyuriy писал(а): ↑09 фев 2021, 17:55
А чтобы результат отправить в телегу
GRISHA765 писал(а): ↑11 фев 2021, 18:46
Хотелось бы такойже скрипт для телеграмма. А вот как сделать так я незнаю.
дык тут знать то много и не нада, результаты данного скрипта записываем в переменную, содержимое данной переменной отправляем в телегу например простым скриптом
telega_test из моей темы
управление с телеги
Спасибо большое! Буду пробовать
-
Sertik
- Сообщения: 1084
- Зарегистрирован: 15 сен 2017, 09:03
21 фев 2021, 22:20
Ну да, а если у человека встретиться в названии интерфейса или ещё где-то хоть один не поддерживаемый Телеграммом символ (русская буква или спец. символ), то ничего никуда не отправится ...
Сначала конвертировать надо в UTF-8 ...
https://habr.com/en/post/518534/
Так что дык нада знать кое-чо всё таке ...
Чего не знаем то нагуглим
-
drpioneer
- Сообщения: 46
- Зарегистрирован: 30 май 2013, 10:20
22 фев 2021, 12:28
Учитывая все замечания, думаю, не будет большой проблемой написать требуемый скрипт.
Но возникают следующие вопросы:
- как вывести таблицу так, чтобы её было удобно смотреть в мессенжере на телефоне?
- по какому событию должна формироваться и отправляться таблица?
- нафига это надо, когда можно всё тоже самое сделать по необходимости через Winbox? И оно уже РАБОТАЕТ!!!
-
Sertik
- Сообщения: 1084
- Зарегистрирован: 15 сен 2017, 09:03
23 фев 2021, 17:24
нафига это надо
Вот самый правильный вопрос и одновременно ответ на него.
Мониторировать нужно что-то существенное, а не всё подряд. Но некоторым хочется иметь ощущение полного контроля над ситуацией ...
Чего не знаем то нагуглим