Скрипт для нахождения IP адресов в Address List из одной подсети 0/24

В данном разделе размещаются только платные Задания
Правила форума
1. Для каждого Задания открывается новая тема.
Одно Задание - одна тема. Повторяющиеся темы удаляются.
2. Обсуждение стоимости работ, ведётся только посредством личных сообщений.
Исключение: открытая цена за Задание.
4. Администрация форума не несёт ответственности за выполненную, или невыполненную работу. Данный форум является бесплатной доской объявлений, помогающий в поиске Исполнителей.
Ответить
OlimpFil
Сообщения: 3
Зарегистрирован: 10 фев 2020, 09:42

Сможет ли кто-нибудь за вознаграждение написать скрипт: получить список IP адресов из address list "!!!-= RDP BAN =-!!!" у которых первые три октета IP адреса одинаковые, а отличается только последний и таких адресов более четырех. Т.е. найти в address list "!!!-= RDP BAN =-!!!" такие подсети, в которых в одной подсети 4 и более IP адресов, чтобы потом уже вручную заблочить всю подсеть 0/24.

RouterOS 6.49.3


MikroTik RB4011iGS+5HacQ2HnD-IN и RB951Ui-2nD
Sertik
Сообщения: 1601
Зарегистрирован: 15 сен 2017, 09:03

Писать не хочется. Нужно использовать posix regex. Вот тема в помощь https://forum.mikrotik.com/viewtopic.ph ... 84#p871284
Попробую спросить для Вас на оффоруме, абсолютно бесплатно, конечно, одного знающего человека, для которого такое написать - раз плюнуть ... Если будет выхлоп, выложу.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Sertik
Сообщения: 1601
Зарегистрирован: 15 сен 2017, 09:03

Ловите, бесплатно:

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

# название нашего адрес-листа
:local list "blocklist"
# лимит наполнения одинаковыми адресами
:local count 4

# наполнение адрес-листа адресами
/ip firewall address-list {
    :local ip2net do={:return [[:parse ":return $($1 & 255.255.255.0)/$2"]]}
    :local addr    0.0.0.0
    :local net     0.0.0.0
    :foreach item in=[find where ([:typeof [:toip $address]]="ip")] do={
        :set addr [get $item address]
        :set net  [$ip2net $addr 24]
        :if ([:len [find where $address in $net]] > $count) do={
            :put "\r\nSearch results for $net"; print where $address in $net
	 add address=$addr list=$list timeout=24h

        }
    }
}

# блокировка
/ip firewall filter add action=drop chain=input comment="Dropping dangerous adresses" src-address-list=$list

Но с оговорочкой ! Скрипт работает не совсем правильно. За правильным - в личку. :-)
Сможете поправить сами - молодец ! тогда будет бесплатно ...


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ответить