Есть скрипт добавления адресов в адреслист если пингонуть нужной длинной пакета
/ip firewall filter add action=add-src-to-address-list address-list=test address-list-timeout=5h chain=input packet-size=1000 protocol=icmp in-interface=ether1
Возможно ли отправлять сообщение в телеграм при добавлении новых адресов в адрес лист?
скрипт отправления в телегу есть
/tool fetch url="https://api.telegram.org/botХХХХХХХХХ:х ... ew_address"
Помощь со скриптами
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
-
- Сообщения: 1657
- Зарегистрирован: 15 сен 2017, 09:03
Это не скрипт, а правило для /ip firewall filterЕсть скрипт добавления адресов в адреслист если пингонуть нужной длинной пакета
/ip firewall filter add action=add-src-to-address-list address-list=test address-list-timeout=5h chain=input packet-size=1000 protocol=icmp in-interface=ether1
То, что Вы хотите, сделать можно, но думаю, это нельзя будет сделать при добавлении каждого нового адреса. Скрипт, анализирующий записи в Вашем адрес-листе test будет помещен в планировщик и в любом случае выполняться раз в N-время. Он сможет проверить имеющиеся записи в этом листе и допустим сравнить их с записями, которые были при предыдущим запуске (которые скрипт будет хранить в массиве или другом адрес-листе). Если в течении времени N в адрес-лист будет добавлена не одна, а несколько записей - все они будут пересланы Вам в Телеграмм. Но по одной (т.е. при появлении каждой новой записи) это представляется малореальным, т.к. кто его знает какая частота добавления записей этих в Ваш адрес-лист ? Если записи добавляются не часто - будет работать нормально. А может это адрес-лист адресов брутфорса Вашего тика, когда к Вам ломятся за одну секунду с огромного числа адресов ? Тогда и массива может не хватить и памяти для заполнения такого листа да и скорости роутера тоже.
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947
-
- Сообщения: 28
- Зарегистрирован: 22 июн 2020, 10:34
- Откуда: Харьков
Да перепутал малость.Sertik писал(а): ↑22 июн 2020, 12:24Это не скрипт, а правило для /ip firewall filterЕсть скрипт добавления адресов в адреслист если пингонуть нужной длинной пакета
/ip firewall filter add action=add-src-to-address-list address-list=test address-list-timeout=5h chain=input packet-size=1000 protocol=icmp in-interface=ether1
Собственно список адресов не большой и добавляются туда адреса очень редко, хотелось бы мониторить этот процес.
-
- Сообщения: 1657
- Зарегистрирован: 15 сен 2017, 09:03
Чтобы не хранить ip уже добавленные в Ваш адрес лист где-то в массиве или еще где дабы отличать новый добавляемый от имеющихся в листе, я бы предложил наверное следущий алгоритм работы нужного Вам скрипта:
1. При старте роутера скрипт проходит циклом :foreich по всем записям Вашего адрес-листа test и всем записям присваивает какой-то один комментарий, например "old". Это делается только при старте роутера и при первом выполнении скрипта (технически это можно)
2. При втором и последующих запусках скрипт смотрит не появилась ли в адрес-листе запись (адрес) без комментария ? (то есть добавленная Вашим правилом для /ip firewall filter ...
Если такая (такие) записи найдены - сообщаем о них в телеграмм и ставим им комментарий "old" (чтобы при новом запуске скрипт уже не обращал на них никакого внимания. Как-то так.
Это алгоритм. Он простой. Попробуйте сами. Вот в помощь ссылка на полезные строки кода для работы с адрес-листами:
http://iocsha.ddns.net/news/89/1331/
1. При старте роутера скрипт проходит циклом :foreich по всем записям Вашего адрес-листа test и всем записям присваивает какой-то один комментарий, например "old". Это делается только при старте роутера и при первом выполнении скрипта (технически это можно)
2. При втором и последующих запусках скрипт смотрит не появилась ли в адрес-листе запись (адрес) без комментария ? (то есть добавленная Вашим правилом для /ip firewall filter ...
Если такая (такие) записи найдены - сообщаем о них в телеграмм и ставим им комментарий "old" (чтобы при новом запуске скрипт уже не обращал на них никакого внимания. Как-то так.
Это алгоритм. Он простой. Попробуйте сами. Вот в помощь ссылка на полезные строки кода для работы с адрес-листами:
http://iocsha.ddns.net/news/89/1331/
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947
-
- Сообщения: 1657
- Зарегистрирован: 15 сен 2017, 09:03
Скрипт ставим в Шедуллер с нужной переодичностью
имя адрес листа и комментарий поставите свои
собственно почти всё, Вам остается подшлифовать и сделать при первом запуске скрипта чтобы он всем уже имеющимся адресам в Вашем адрес-листе поставил комментарий "old". Если же у Вас динамический адрес-лист (а он наверняка такой), то при старте роутера он всегда будет пустой, т.к. при перезагрузке динамические адрес-листы стираются из памяти (то есть даже этого Вам делать не нужно).
Скрипт сделан за Вас (кстати проверен, мне исправно шлет через lte-модем, в том числе когда за время между исполнением скрипта добавляется не один, а несколько адресов. Ну адресов не должно быть слишком много, а то будет превышена длина строки сообщения. У меня скрипт срабатывает раз в минуту. SMS ограничена 70 символов в сообщении кажется. Если больше пяти адресов за минуту не добавляется, то нормально всё укладывается в одно SMS типа так:
/tool sms send lte1 phone="+7905blabla message=("$[/system identity get name] $[/system clock get time] $[/system clock get date] add new address "."$[:tostr $listaddress]"." in list "."$myaddresslist")
В телеграмм наверное будет ограничение длины строки 255 символов, то есть ещё больше адресов может перечисляться в $[:tostr $listaddress]
Единственный момент, когда будете формировать сообщение не забудьте преобразовать массив $listaddress в строку вот так [:tostr $listaddress] иначе есть шанс наступить на интересный баг ! (кто знает, тот поймет)
имя адрес листа и комментарий поставите свои
Код: Выделить всё
:local listaddress [:toarray ""]
:local myaddresslist "test"
:local mycomment "old"
:foreach i in=[/ip firewall address-list find where list=$myaddresslist] do={:if ([:len [/ip firewall address-list get $i comment]]=0) do={
:set listaddress [:put ($listaddress, [/ip firewall address-list get $i address])]
/ip firewall address-list set $i comment=$mycomment}};
# получаем массив из добавленных между срабатыванием скрипта адресов
:log info $listaddress
# количество добавленных адресов если надо
:log info [:len $listaddress]
# тут вставите отправку сообщения в Вашу телегу
Скрипт сделан за Вас (кстати проверен, мне исправно шлет через lte-модем, в том числе когда за время между исполнением скрипта добавляется не один, а несколько адресов. Ну адресов не должно быть слишком много, а то будет превышена длина строки сообщения. У меня скрипт срабатывает раз в минуту. SMS ограничена 70 символов в сообщении кажется. Если больше пяти адресов за минуту не добавляется, то нормально всё укладывается в одно SMS типа так:
/tool sms send lte1 phone="+7905blabla message=("$[/system identity get name] $[/system clock get time] $[/system clock get date] add new address "."$[:tostr $listaddress]"." in list "."$myaddresslist")
В телеграмм наверное будет ограничение длины строки 255 символов, то есть ещё больше адресов может перечисляться в $[:tostr $listaddress]
Единственный момент, когда будете формировать сообщение не забудьте преобразовать массив $listaddress в строку вот так [:tostr $listaddress] иначе есть шанс наступить на интересный баг ! (кто знает, тот поймет)
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947
-
- Сообщения: 28
- Зарегистрирован: 22 июн 2020, 10:34
- Откуда: Харьков
Искал и не нашел как сделать так чтобы адреса добавлялись статически, это было бы на много удобнееSertik писал(а): ↑22 июн 2020, 12:24Это не скрипт, а правило для /ip firewall filterЕсть скрипт добавления адресов в адреслист если пингонуть нужной длинной пакета
/ip firewall filter add action=add-src-to-address-list address-list=test address-list-timeout=5h chain=input packet-size=1000 protocol=icmp in-interface=ether1
-
- Сообщения: 4230
- Зарегистрирован: 25 фев 2018, 22:41
- Откуда: Москва
-
- Сообщения: 28
- Зарегистрирован: 22 июн 2020, 10:34
- Откуда: Харьков
Мне вот интересно как люди с таким интеллектом как у меня до сих пор живы....
Все работает кроме небольшой баги о которой говорилось и которую смоделировал, ткните пожалуйста носом куда вставлять ту команду нужно.
Код: Выделить всё
:local listaddress [:toarray ""]
:local myaddresslist "test"
:local mycomment "old"
:foreach i in=[/ip firewall address-list find where list=$myaddresslist] do={:if ([:len [/ip firewall address-list get $i comment]]=0) do={
:set listaddress [:put ($listaddress, [/ip firewall address-list get $i address])]
/ip firewall address-list set $i comment=$mycomment}};
# получаем массив из добавленных между срабатыванием скрипта адресов
:log info $listaddress
# количество добавленных адресов если надо
:log info [:len $listaddress]
# тут вставите отправку сообщения в Вашу телегу
/tool fetch url="https://api.telegram.org/botxxxxxxxxx/sendMessage\?chat_id=-xxxxxxxx&text=$listaddress""
-
- Сообщения: 4230
- Зарегистрирован: 25 фев 2018, 22:41
- Откуда: Москва
"Ту команду" - это то что я вам написал? Про статические записи?
Так это не команда, а один из атрибутов правила в firewall. Туда и "вставлять", на вкладке action.
Так это не команда, а один из атрибутов правила в firewall. Туда и "вставлять", на вкладке action.
Telegram: @thexvo
-
- Сообщения: 28
- Зарегистрирован: 22 июн 2020, 10:34
- Откуда: Харьков
Вот про эту, преобразование массива в строку