Получение ip адреса вместо идентификатора

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
evgeniy.gojev
Сообщения: 11
Зарегистрирован: 09 янв 2021, 22:13

Добрый день. Имеется скрипт отправки аллертов в телегу. Подскажите как я могу получить вместо [/system identity get name] идентификатора микротика чтобы мне подставлялся адрес бридж интерфейса /ip addresses bridge?

:global lastTime
:global output
:global mtIdentity [/system identity get name];
:global botID "botxxxxx" ;
:global myChatID "xxxx" ;

:local LogGet [ :toarray [ /log find topics~"critical" || message~"login failure" || message~"[Ff]ailure" ] ] ;
:local LogtLineCount [ :len $LogGet ] ;
if ($LogtLineCount > 0) do={
:local currentTime "$[ /log get [ :pick $LogGet ($LogtLineCount -1) ] time ]";
:if ([:len $currentTime] = 10 ) do={
:set currentTime [ :pick $currentTime 0 10 ];
}
:set output "$currentTime - $[/log get [ :pick $LogGet ($LogtLineCount-1) ] message ]";
:if (([:len $lastTime] < 1) || (([:len $lastTime] > 0) && ($lastTime != $currentTime))) do={
:set lastTime $currentTime ;
:tool fetch url=("https://api.telegram.org/$botID/sendmes ... mtIdentity\" : $output") keep-result=no
}
}


FatherEthernet
Сообщения: 8
Зарегистрирован: 25 май 2020, 17:47

evgeniy.gojev писал(а): 27 дек 2021, 11:14 :global mtIdentity [/system identity get name];
Заменить на :global InterfaceBridge [/ip address get [find interface="Имя_вашего_бриджа"] address]
Дальше вставляете переменную $InterfaceBridge в текст, отправляемый вашему боту.


evgeniy.gojev
Сообщения: 11
Зарегистрирован: 09 янв 2021, 22:13

FatherEthernet писал(а): 27 дек 2021, 12:17
evgeniy.gojev писал(а): 27 дек 2021, 11:14 :global mtIdentity [/system identity get name];
Заменить на :global InterfaceBridge [/ip address get [find interface="Имя_вашего_бриджа"] address]
Дальше вставляете переменную $InterfaceBridge в текст, отправляемый вашему боту.
Огромное спасибо! Работает


Аватара пользователя
Virtue
Сообщения: 142
Зарегистрирован: 07 мар 2014, 10:17

evgeniy.gojev писал(а): 27 дек 2021, 12:27 Огромное спасибо! Работает
но есть один ньюанс.. если у вас будет например несколько адресов на интерфейсе, может выдать такую ошибку: invalid internal item number
тогда придется добавлять фильтр поиска, чтоб находился только 1 адрес


FatherEthernet
Сообщения: 8
Зарегистрирован: 25 май 2020, 17:47

Virtue писал(а): 27 дек 2021, 12:51
evgeniy.gojev писал(а): 27 дек 2021, 12:27 Огромное спасибо! Работает
но есть один ньюанс.. если у вас будет например несколько адресов на интерфейсе, может выдать такую ошибку: invalid internal item number
тогда придется добавлять фильтр поиска, чтоб находился только 1 адрес
Согласен с Вами, такой вариант возможен... Просто понадеялся, что ТС будет достаточно и этого. :hi_hi_hi:
Как вариант, можно использовать foreach:

Код: Выделить всё

:foreach IpAddress in=([/ip address find where interface="bridge1"]) do={
 :set $InterfaceBridge value=([/ip address get $IpAddress value-name=address]."  ".$InterfaceBridge)}


-13-
Сообщения: 124
Зарегистрирован: 18 мар 2021, 12:45

Еще вариант добавить комментарий и искать уже по нему, ну а вдруг кто не знает.


Ответить