Уведомление о подключении и отключении к сети wifi

Автоматизация при помощи встроенного скриптового языка и RouterOS API
chas99
Сообщения: 128
Зарегистрирован: 10 фев 2017, 08:52

Уведомление о подключении и отключении к сети wifi

Сообщение chas99 »

Помогите пожалуйста.

Нужен скрипт !

Нужно, чтобы при подключении к WiFi определённого , MAC телефона выполнялся такой запрос
http://192.168.1.101:8080/?command=2&channel=0&value=1

А при покидания сети, такой запрос
http://192.168.1.101:8080/?command=2&channel=0&value=0
Аватара пользователя
Sir_Prikol
Сообщения: 562
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

Re: Уведомление о подключении и отключении к сети wifi

Сообщение Sir_Prikol »

Вариант 1 (переделать под себя)

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

:if ([:len $MACLIST] = 0) do={ :global MACLIST {""}; };

:foreach i in=[/caps-man registration-table find] do={
   :local USERObj [/caps-man registration-table get $i];
   
   :if (($MACLIST->($USERObj->"mac-address")) != true) do={
      :local DHCPID [/ip dhcp-server lease find mac-address=$USERObj->"mac-address"];
      :local String "";
      
      :if ($DHCPID = "") do={
         :set String ("[Wi-Fi] Unknown device connected: inter: " . $USERObj->"interface" . ", " . $USERObj->"rx-signal" . "dBm, mac: " . $USERObj->"mac-address" . ", host: ip address not issued.");
      };
      
      :if ($DHCPID != "") do={
         :local DHCPObj [/ip dhcp-server lease get $DHCPID];
         
         :if ($DHCPObj->"dynamic" = true) do={
            :set String ("[Wi-Fi] Unknown device connected: inter: " . $USERObj->"interface" . ", " . $USERObj->"rx-signal" . "dBm, mac: " . $USERObj->"mac-address" . ", host: " . $DHCPObj->"host-name" . ", ip: " . $DHCPObj->"active-address" . ".");
         };
      };
      
      :if ($String != "") do={
         :set ($MACLIST->($USERObj->"mac-address")) true;
         :log error $String;
         
      };
   };
};
Вариант 2 (так-же переделать под себя)

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

:local lstime ([/system scheduler get value-name=next-run [find name="connected_wifi"]] - [/system scheduler get value-name=interval [find name="connected_wifi"]] * 2);
:foreach i in=[/log find message~"connected" && time>=$lstime] do={/tool fetch mode="https" url="https://hooks.slack.com/services/данные_канала_в_слак" http-method=post http-data="payload={\"text\": \"$[/system identity get name]%0A$[/log get $i message]\"}" keep-result=no};

Вариант 3 (так-же переделываем под себя)

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

:local token "YOUR:BOT_TOKEN";
:local chatid "@CHAT_ID";
:local lstime ([/system scheduler get value-name=next-run [find name="correct-login"]] - [/system scheduler get value-name=interval [find name="correct-login"]] * 2);
:foreach i in=[/log find message~"logged in" && time>=$lstime] do={/tool fetch address=api.telegram.org url="https://api.telegram.org/bot$(token)/sendMessage\?chat_id=$(chatid)&text=$[/system identity get name]%0A$[/log get $i message]" keep-result=no};
Дома: CCR2004 (7-ISP(GPON)белый IP)
Аватара пользователя
Sir_Prikol
Сообщения: 562
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

Re: Уведомление о подключении и отключении к сети wifi

Сообщение Sir_Prikol »

Вариант 4, прописывается в секции Script в настройках DHCP-Server (так-же переделываем под себя)

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


: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 address=api.telegram.org url="https://api.telegram.org/YOUR:BOT_TOKEN/sendmessage\?chat_id=@CHAT_ID&text=%D0%9D%D0%BE%D0%B2%D0%BE%D0%B5%20%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%BE%20%D0%B2%20%D1%81%D0%B5%D1%82%D0%B8%20%D1%81%20IP%20- $leaseActIP !%F0%9F%92%A5 ($comment)" keep-result=no

		}
	}
}

Дома: CCR2004 (7-ISP(GPON)белый IP)
YaroslavMirgorod
Сообщения: 1
Зарегистрирован: 08 фев 2022, 09:48

Re: Уведомление о подключении и отключении к сети wifi

Сообщение YaroslavMirgorod »

Sir_Prikol писал(а): 14 ноя 2021, 20:48 Вариант 1 (переделать под себя)

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

:if ([:len $MACLIST] = 0) do={ :global MACLIST {""}; };

:foreach i in=[/caps-man registration-table find] do={
   :local USERObj [/caps-man registration-table get $i];
   
   :if (($MACLIST->($USERObj->"mac-address")) != true) do={
      :local DHCPID [/ip dhcp-server lease find mac-address=$USERObj->"mac-address"];
      :local String "";
      
      :if ($DHCPID = "") do={
         :set String ("[Wi-Fi] Unknown device connected: inter: " . $USERObj->"interface" . ", " . $USERObj->"rx-signal" . "dBm, mac: " . $USERObj->"mac-address" . ", host: ip address not issued.");
      };
      
      :if ($DHCPID != "") do={
         :local DHCPObj [/ip dhcp-server lease get $DHCPID];
         
         :if ($DHCPObj->"dynamic" = true) do={
            :set String ("[Wi-Fi] Unknown device connected: inter: " . $USERObj->"interface" . ", " . $USERObj->"rx-signal" . "dBm, mac: " . $USERObj->"mac-address" . ", host: " . $DHCPObj->"host-name" . ", ip: " . $DHCPObj->"active-address" . ".");
         };
      };
      
      :if ($String != "") do={
         :set ($MACLIST->($USERObj->"mac-address")) true;
         :log error $String;
         
      };
   };
};
Вариант 2 (так-же переделать под себя)

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

:local lstime ([/system scheduler get value-name=next-run [find name="connected_wifi"]] - [/system scheduler get value-name=interval [find name="connected_wifi"]] * 2);
:foreach i in=[/log find message~"connected" && time>=$lstime] do={/tool fetch mode="https" url="https://hooks.slack.com/services/данные_канала_в_слак" http-method=post http-data="payload={\"text\": \"$[/system identity get name]%0A$[/log get $i message]\"}" keep-result=no};

Вариант 3 (так-же переделываем под себя)

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

:local token "YOUR:BOT_TOKEN";
:local chatid "@CHAT_ID";
:local lstime ([/system scheduler get value-name=next-run [find name="correct-login"]] - [/system scheduler get value-name=interval [find name="correct-login"]] * 2);
:foreach i in=[/log find message~"logged in" && time>=$lstime] do={/tool fetch address=api.telegram.org url="https://api.telegram.org/bot$(token)/sendMessage\?chat_id=$(chatid)&text=$[/system identity get name]%0A$[/log get $i message]" keep-result=no};
Этот код с выборкой по времени :local lstime ([/system scheduler get value-name=next-run [find name="correct-login"]] - [/system scheduler get value-name=interval [find name="correct-login"]] * 2) не работает должным образом с версией OS 7.1.1 запускает сообщения в цикл до бесконечности.
Аватара пользователя
Sir_Prikol
Сообщения: 562
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

Re: Уведомление о подключении и отключении к сети wifi

Сообщение Sir_Prikol »

На ROS 7 сменился скриптовый язык, а так как сама ROS 7 сырая до безобрази, то я её не пользую
Дома: CCR2004 (7-ISP(GPON)белый IP)
chas99
Сообщения: 128
Зарегистрирован: 10 фев 2017, 08:52

Re: Уведомление о подключении и отключении к сети wifi

Сообщение chas99 »

Отлично! спасибо большое!!!