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

Re: Нужна помощь!

Добавлено: 29 июл 2020, 13:23
Sertik
Если включить логирование на всё что можно, то и скрипты не нужны будут ... :-) Ради такой малой задачи гонять такой скрипт ... :-)

Re: Нужна помощь!

Добавлено: 29 июл 2020, 14:42
kertis
Появилась новая проблема.
Если локальные ip идут по адресам адрес-листа "ХХХХХ", тогда это записывается в лог и отправляется в телегу. Но если IP из этого листа "ХХХХХ" недоступен, то в логе начинается спам, что можно с этим сделать?

Re: Нужна помощь!

Добавлено: 29 июл 2020, 18:27
Virtue
kertis писал(а): 29 июл 2020, 14:42 Появилась новая проблема.
Очень сложно разбирать чужие скрипты и выявлять в них проблемы.. Гораздо проще сделать как я говорил, скрипт взять из темы "оповещение телеграм" тот который обновленный, вконце темы я выложил, он будет слать в телегу ошибки и варнинги из лога, и написать простой скрипт типа: если в адрес листе что-то есть, пишем это в лог варнинг.. всё..

Re: Нужна помощь!

Добавлено: 29 июл 2020, 21:56
Sertik
Ладно уж. Вот Вам по доброте душевной. Всё проверено и работает и не нужно огороды городить.
Всё соответственно "Вашему ТЗ" - пересылает все! записи из адрес листа $myaddresslist в Телегу
Разумеется можно пересылать только новые записи - две строки добавить в скрипт, но это уже сами, сами или - в раздел платные услуги :-)

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

:local listaddress [:toarray ""]
:local myaddresslist "my adresslist name"
:local mtIdentity [/system identity get name];
:local botID "botXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXX" ;
:local myChatID "YYYYYY" ;

:foreach i in=[/ip firewall address-list find where list=$myaddresslist] do={:set listaddress ($listaddress, [/ip firewall address-list get $i address]);}
:local la ("$mtIdentity "."send "."$myaddresslist "."ip adresses: "."$[:tostr $listaddress]")
:tool fetch url=("https://api.telegram.org/$botID/sendmessage\?chat_id=$myChatID&text=$la") keep-result=no;

Re: Нужна помощь!

Добавлено: 30 июл 2020, 09:48
kertis
Sertik писал(а): 29 июл 2020, 21:56 Ладно уж. Вот Вам по доброте душевной. Всё проверено и работает и не нужно огороды городить.
Всё соответственно "Вашему ТЗ" - пересылает все! записи из адрес листа $myaddresslist в Телегу
Разумеется можно пересылать только новые записи - две строки добавить в скрипт, но это уже сами, сами или - в раздел платные услуги :-)

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

:local listaddress [:toarray ""]
:local myaddresslist "my adresslist name"
:local mtIdentity [/system identity get name];
:local botID "botXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXX" ;
:local myChatID "YYYYYY" ;

:foreach i in=[/ip firewall address-list find where list=$myaddresslist] do={:set listaddress ($listaddress, [/ip firewall address-list get $i address]);}
:local la ("$mtIdentity "."send "."$myaddresslist "."ip adresses: "."$[:tostr $listaddress]")
:tool fetch url=("https://api.telegram.org/$botID/sendmessage\?chat_id=$myChatID&text=$la") keep-result=no;
Спасибо. Вчера дошел до такого варианта.

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

:foreach counter in= [/ip firewall address-list find list=ХХХХХХ] do={
    :local ip [/ip firewall address-list get $counter address];
tool fetch url="https://api.telegram.org/botХХХХХХХХХХХХХХХ/sendMessage?chat_id=ХХХХХХХХХХХ&text=$ip+ХХХХХ" dst-path=telegram.txt};

Re: Нужна помощь!

Добавлено: 30 июл 2020, 10:12
Sertik

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

:foreach counter in= [/ip firewall address-list find list=ХХХХХХ] do={
    :local ip [/ip firewall address-list get $counter address];
tool fetch url="https://api.telegram.org/botХХХХХХХХХХХХХХХ/sendMessage?chat_id=ХХХХХХХХХХХ&text=$ip+ХХХХХ" dst-path=telegram.txt};
Плохой вариант. Так как отправка в Телеграмм происходит в цикле, отправляется по одному адресу. Если у Вас там сто адресов :fetch сто раз сработает и на 2-ом, третьем повиснет - между отправками нет задержки - это раз, во-вторых зачем гонять fetch на отправку каждого адреса - нужно получить все адреса в массив и один раз их отправить. Ну и по-хорошему обработку ошибок нужно при отправке прикрутить, т.к. если fetch по какой-то причине не отправит - скрипт повиснет просто.