Yur0k Posted January 29, 2018 (edited) · Report post Помогите разобраться, пожалуйста.Имеется вот такой скриптик, который при получении динамического 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 Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nkusnetsov Posted January 29, 2018 · Report post @Yur0k , у Вас обрабатываются ВСЕ, в том числе, ранее выданные адреса в конструкции :foreach i in=[find dynamic=yes] Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Yur0k Posted January 29, 2018 · Report post скрипт отрабатывает при выдаче в dhcp. "Lease Script" соответственно кроме только что выданного нет больше.. его и швыряет в отчет много раз Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nkusnetsov Posted January 29, 2018 (edited) · Report post @Yur0k , попробуйте в fetch использовать keep-result=no Edited January 29, 2018 by nkusnetsov Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Yur0k Posted January 29, 2018 · Report post 27 минут назад, nkusnetsov сказал: @Yur0k , попробуйте в fetch использовать keep-result=no без изменений.. :( Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nkusnetsov Posted January 29, 2018 · Report post @Yur0k , а в логах что? Команда "/log error $comment" тоже несколько раз отрабатывает? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Yur0k Posted January 29, 2018 · Report post 1 час назад, nkusnetsov сказал: @Yur0k , а в логах что? Команда "/log error $comment" тоже несколько раз отрабатывает? да, тоже самое Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Yur0k Posted January 29, 2018 · Report post 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 Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nkusnetsov Posted January 30, 2018 (edited) · Report post 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 Ответить с цитированием Share this post Link to post Share on other sites More sharing options...