Yur0k Posted January 29, 2018 Posted January 29, 2018 (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 January 30, 2018 by Yur0k Вставить ник Quote
nkusnetsov Posted January 29, 2018 Posted January 29, 2018 @Yur0k , у Вас обрабатываются ВСЕ, в том числе, ранее выданные адреса в конструкции :foreach i in=[find dynamic=yes] Вставить ник Quote
Yur0k Posted January 29, 2018 Author Posted January 29, 2018 скрипт отрабатывает при выдаче в dhcp. "Lease Script" соответственно кроме только что выданного нет больше.. его и швыряет в отчет много раз Вставить ник Quote
nkusnetsov Posted January 29, 2018 Posted January 29, 2018 (edited) @Yur0k , попробуйте в fetch использовать keep-result=no Edited January 29, 2018 by nkusnetsov Вставить ник Quote
Yur0k Posted January 29, 2018 Author Posted January 29, 2018 27 минут назад, nkusnetsov сказал: @Yur0k , попробуйте в fetch использовать keep-result=no без изменений.. :( Вставить ник Quote
nkusnetsov Posted January 29, 2018 Posted January 29, 2018 @Yur0k , а в логах что? Команда "/log error $comment" тоже несколько раз отрабатывает? Вставить ник Quote
Yur0k Posted January 29, 2018 Author Posted January 29, 2018 1 час назад, nkusnetsov сказал: @Yur0k , а в логах что? Команда "/log error $comment" тоже несколько раз отрабатывает? да, тоже самое Вставить ник Quote
Yur0k Posted January 29, 2018 Author Posted January 29, 2018 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" } } } } Вставить ник Quote
nkusnetsov Posted January 30, 2018 Posted January 30, 2018 (edited) 7 часов назад, Yur0k сказал: /int wire reg; :foreach i in=[find] Вот и ответ. Количество сообщений = количеству зарегистрированных на ТД клиентов. Поиск в таблице регистрации надо провести единожды (один новый мак) по leaseActMAC, типа/int wire reg; :foreach i in=[find mac-address=$leaseActMAC] Edited January 30, 2018 by nkusnetsov Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.