Страница 1 из 1

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

Добавлено: 27 дек 2021, 11:14
evgeniy.gojev
Добрый день. Имеется скрипт отправки аллертов в телегу. Подскажите как я могу получить вместо [/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
}
}

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

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

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

Добавлено: 27 дек 2021, 12:27
evgeniy.gojev
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 в текст, отправляемый вашему боту.
Огромное спасибо! Работает

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

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

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

Добавлено: 27 дек 2021, 15:53
FatherEthernet
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)}

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

Добавлено: 28 дек 2021, 16:16
-13-
Еще вариант добавить комментарий и искать уже по нему, ну а вдруг кто не знает.