Jump to content

Микротик скрипт отправка в телеграмм информации о динамическом IP (решено)


Recommended Posts

Posted (edited)

Помогите разобраться, пожалуйста.
Имеется вот такой скриптик, который при получении динамического IP отправляет информацию об устройстве в телегу.

: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/botXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX/sendMessage?chat_id=XXXXXXXXX&text=IP:$leaseActIP;$leaseActMAC;SRV:$leaseServerName;HN:$clientid"
}
}
}

так вот, при срабатывании в телегу валится 5-10 сообщений.

New Client IP:ХХХ.ХХХ.ХХХ.ХХХ 00:00:00:00:00:00 SRV:home_net HN:android-412b2a0b5cf421b6 signal-strength:-81dBm@1Mbps

подскажите, где кольцо, в чем ошибка?

Edited by Yur0k
Posted

скрипт отрабатывает при выдаче в dhcp. "Lease Script"

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

Posted
2 часа назад, nkusnetsov сказал:

@Yur0k , а в логах что? Команда "/log error $comment" тоже несколько раз отрабатывает?

Я сильно виноват.... я не тот скрипт выложил. верхний отрабатывает нормально. мне нужен уровень сигнала. добавляем запрос и получается куча сообщений.

:if ($leaseBound = 0) do={
/int wire reg;
:foreach i in=[find] do={
:local ss
:set ss [get $i signal-strength];

/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. ": " . $ss);
/log error $comment;
/tool fetch url="https://api.telegram.org/botXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX/sendMessage?chat_id=XXXXXXXXX&text=IP:$leaseActIP;$leaseActMAC;SRV:$leaseServerName;HN:$clientid"
}
}
}
}

 

Posted (edited)
7 часов назад, Yur0k сказал:

/int wire reg; :foreach i in=[find]

Вот и ответ. Количество сообщений = количеству зарегистрированных на ТД клиентов.
Поиск в таблице регистрации надо провести единожды (один новый мак) по leaseActMAC, типа
/int wire reg;

:foreach i in=[find mac-address=$leaseActMAC]

Edited by nkusnetsov

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.