Yur0k Опубликовано 29 января, 2018 (изменено) · Жалоба Помогите разобраться, пожалуйста.Имеется вот такой скриптик, который при получении динамического 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 подскажите, где кольцо, в чем ошибка? Изменено 30 января, 2018 пользователем Yur0k Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
nkusnetsov Опубликовано 29 января, 2018 · Жалоба @Yur0k , у Вас обрабатываются ВСЕ, в том числе, ранее выданные адреса в конструкции :foreach i in=[find dynamic=yes] Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Yur0k Опубликовано 29 января, 2018 · Жалоба скрипт отрабатывает при выдаче в dhcp. "Lease Script" соответственно кроме только что выданного нет больше.. его и швыряет в отчет много раз Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
nkusnetsov Опубликовано 29 января, 2018 (изменено) · Жалоба @Yur0k , попробуйте в fetch использовать keep-result=no Изменено 29 января, 2018 пользователем nkusnetsov Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Yur0k Опубликовано 29 января, 2018 · Жалоба 27 минут назад, nkusnetsov сказал: @Yur0k , попробуйте в fetch использовать keep-result=no без изменений.. :( Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
nkusnetsov Опубликовано 29 января, 2018 · Жалоба @Yur0k , а в логах что? Команда "/log error $comment" тоже несколько раз отрабатывает? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Yur0k Опубликовано 29 января, 2018 · Жалоба 1 час назад, nkusnetsov сказал: @Yur0k , а в логах что? Команда "/log error $comment" тоже несколько раз отрабатывает? да, тоже самое Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Yur0k Опубликовано 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" } } } } Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
nkusnetsov Опубликовано 30 января, 2018 (изменено) · Жалоба 7 часов назад, Yur0k сказал: /int wire reg; :foreach i in=[find] Вот и ответ. Количество сообщений = количеству зарегистрированных на ТД клиентов. Поиск в таблице регистрации надо провести единожды (один новый мак) по leaseActMAC, типа/int wire reg; :foreach i in=[find mac-address=$leaseActMAC] Изменено 30 января, 2018 пользователем nkusnetsov Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...