Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Автоматизация при помощи встроенного скриптового языка и RouterOS API
Аватара пользователя
ilya.bes
Сообщения: 15
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Сообщение ilya.bes »

Всем привет, говорю прямо в скриптах я дурак ;) и делаю этот конфиг единично.
Вообщем есть скрипт который отслеживает новых пользователей (тех кому не присвоен статический адрес) в dhcp leases, и отправляет сообщение в телеграмм.
прошу шу помощи в добавлении функционала, а именно чтобы после отправки сообщения в телегу клиента переводило в статику и блокировало параметром block access.
зарание спасибо.

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

:if ($leaseBound = 1) do={
	/ip dhcp-server lease;
	:foreach i in=[find dynamic=yes] do={
		:local dhcpip 
		:set dhcpip [ get $i address ];
		:local clientid
		:set clientid [get $i host-name];

		:if ($leaseActIP = $dhcpip) do={
			:local comment "New IP"
			:set comment ( $comment . ": " .  $dhcpip . ": " . $clientid);
			/log error $comment;
			/tool fetch url="https://api.telegram.org/bot1113462583:AAGj9BzPgo********/sendMessage\?chat_id=-1001170******&text=Attention a new unauthorized client is connected%0AIP adres:$leaseActIP%0AMAC adres:$leaseActMAC%0AService: $leaseServerName%0AHost name:$clientid" keep-result=no
		}
	}
}
Последний раз редактировалось ilya.bes 19 апр 2020, 12:42, всего редактировалось 2 раза.

Аватара пользователя
Chupaka
Сообщения: 2657
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Нужна помощь, скрипт отслеживания пользователей с динамическим ip

Сообщение Chupaka »

Приветствую.

А чего вы хотите в конечном результате добиться этим Block Access? Я как вижу, из-за этой галки роутер просто перестанет адрес выдавать клиенту.

Аватара пользователя
ilya.bes
Сообщения: 15
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Re: Нужна помощь, скрипт отслеживания пользователей с динамическим ip

Сообщение ilya.bes »

Доброй ночи.
Замысел в том что так клиент получает статику и блокируется до получения разрешения на вход в сеть (сейчас приходится жать make static и ставить галку руками).

Аватара пользователя
Chupaka
Сообщения: 2657
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Нужна помощь, скрипт отслеживания пользователей с динамическим ip

Сообщение Chupaka »

Так а возможен ли вариант просто не выдавать ничего клиенту, если у него статикой лиза не создана? Сделать у DHCP параметр Address Pool = static-only

Аватара пользователя
ilya.bes
Сообщения: 15
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Re: Нужна помощь, скрипт отслеживания пользователей с динамическим ip

Сообщение ilya.bes »

В моём случае не вариант, нужно чтобы клиенту выдавало адрес из пула и заносило его в лизу, при этом присвоив статику и параметр блокировки. Так я буду получать уведомление в телегу что кто-то подключился и буду иметь возможность оставить как есть или зайти и разрешить клиенту подключаться дальше. Я понимаю что в принципе в скрипте это будет пару строк но вот в скриптах я не силён.

Аватара пользователя
ilya.bes
Сообщения: 15
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Re: Нужна помощь, скрипт отслеживания пользователей с динамическим ip

Сообщение ilya.bes »

Есть мысли как это прикрутить, или куда копать?

Аватара пользователя
ilya.bes
Сообщения: 15
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Re: Нужна помощь, скрипт отслеживания пользователей с динамическим ip

Сообщение ilya.bes »

Решение.
первая часть скрипта отправляет уведомление в телегу, вторая присваивает новому клиенту статику и блокирует его, подписав как не авторизованного.

Есть ли у кого мысли как привязать к комментарию ещё и время/дату подключения?

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

 :if ($leaseBound = 1) do={
	/ip dhcp-server lease;
	:foreach i in=[find dynamic=yes] do={
		:local dhcpip 
		:set dhcpip [ get $i address ];
		:local clientid
		:set clientid [get $i host-name];

		:if ($leaseActIP = $dhcpip) do={
			:local comment "New IP"
			:set comment ( $comment . ": " .  $dhcpip . ": " . $clientid);
			/tool fetch url="https://api.telegram.org/bot********/sendMessage\?chat_id=***********&text=Attention a new unauthorized client is connected%0AIP adres:$leaseActIP%0AMAC adres:$leaseActMAC%0AService: $leaseServerName%0AHost name:$clientid" keep-result=no
		}
	}
}
/ip dhcp-server lease
:foreach i in=[find dynamic] do={
  make-static $i
  set $i comment=UNAUTHORIZED
  set $i block-access=yes
}

Аватара пользователя
Chupaka
Сообщения: 2657
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Нужна помощь, скрипт отслеживания пользователей с динамическим ip

Сообщение Chupaka »

ilya.bes писал(а):
18 апр 2020, 19:29
Есть ли у кого мысли как привязать к комментарию ещё и время/дату подключения?
Например, так:

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

set $i comment=("UNAUTHORIZED, ".[/system clock get date]." ".[/system clock get time])

Аватара пользователя
ilya.bes
Сообщения: 15
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Re: Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Сообщение ilya.bes »

Спасибо, теперь просто идеально)
Снимок2.PNG
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя
ilya.bes
Сообщения: 15
Зарегистрирован: 17 апр 2020, 23:37
Откуда: Горки

Re: Нужна помощь, скрипт отслеживания и блокировки пользователей с динамическим ip [Решено]

Сообщение ilya.bes »

Появился новый вопрос, как сделать так чтобы скрипт срабатывал только на один dhcp а не на все сразу? есть dhcp-master и dhcp-guest, нудно чтобы он работал только в мастере не трогая гостя.