Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    недопустимый внутренний номер товара

    недопустимый внутренний номер товара

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    недопустимый внутренний номер товара, RouterOS
     
    quotengrote
    Guest
    #1
    0
    05.10.2022 07:35:00
    Привет! Когда я задаю переменную так: :global xx "pppoe-out-fb", я не могу использовать её в этом запросе с where: /ip/address/get [find where interface "$xx"]
    выдаёт ошибку: invalid internal item number. В чём может быть проблема?  

    Устройство:  
    /system/resource> print  
    uptime: 3w1d18h4m48s  
    version: 7.6beta6 (development)  
    build-time: Sep/07/2022 09:06:03  
    factory-software: 7.0.4  
    free-memory: 799.4MiB  
    total-memory: 1024.0MiB  
    cpu: ARM64  
    cpu-count: 4  
    cpu-frequency: 350MHz  
    cpu-load: 18%  
    free-hdd-space: 481.9MiB  
    total-hdd-space: 513.0MiB  
    write-sect-since-reboot: 74548  
    write-sect-total: 995885  
    bad-blocks: 0%  
    architecture-name: arm64  
    board-name: RB5009UG+S+  
    platform: MikroTik Wishes mg
     
     
     
    611
    Guest
    #2
    0
    08.05.2023 17:36:00
    Небольшое дополнение, столкнулся с похожей проблемой, но причина не была очевидна из этой ветки.  
    :local interface "some-interface"  
    :put [/ip dhcp-client get [find interface=$interface] primary-dns] Выдаёт «invalid internal item number».
    :put [/ip dhcp-client get [find interface="some-interface"] primary-dns] Работает нормально.
    :local dhcpinterface "some-interface"  
    :put [/ip dhcp-client get [find interface=$dhcpinterface] primary-dns] Тоже работает нормально. Тестировал на ROS 7.9. Причина ошибки в данном случае — конфликт имени между параметром «interface» и переменной «interface», замена переменной на имя с другим названием решает проблему.
     
     
     
    rextended
    Guest
    #3
    0
    08.05.2023 17:59:00
    Ты нарушил простое правило почти всех языков программирования: не используй зарезервированные слова в качестве имён переменных… Если в контексте элемент называется «interface», понятно, что нельзя использовать то же самое имя. Вот почему я написал «iface».
     
     
     
    611
    Guest
    #4
    0
    08.05.2023 20:33:00
    Ты нарушил простое правило почти всех языков программирования: не используй зарезервированные слова в качестве имени переменной... Ладно. Проблема в том, что DHCP-клиент передаёт название интерфейса в скрипт в переменной с именем «interface» (в отличие от DHCP-сервера, который использует переменные типа «bindingVariableName»). Пришлось использовать прокси-переменную. Знаю, это есть в документации (теперь, когда я поискал там список зарезервированных имён переменных), но, честно говоря, конфликт был вовсе не очевиден — с точки зрения реализации я ожидал, что переменные подставятся сначала, в шелле или интерпретаторе скрипта, до исполнения команд (так что конфликта не будет — команда вообще не видит имён переменных). А на деле команды просто наследуют окружение скрипта и подставляют переменные сами, внутри себя (отсюда и конфликт с этой, довольно непонятной, ошибкой). Интересная особенность этой внутренней подстановки переменных — возможность использовать значения других свойств для фильтрации прямо внутри: /ip firewall address-list print where address=$comment Выведет все записи в списке адресов фаервола IPv4, в которых адрес совпадает с комментарием. Правда, похоже, это работает только с командами find и where.
     
     
     
    rextended
    Guest
    #5
    0
    08.05.2023 20:37:00
    «find» и «print»… правильный синтаксис — «find where» и «print where»… Вот сложный пример того, что с этим можно сделать… /system script job print where [:typeof $script]!="nil" (это всего лишь один пример с http://forum.mikrotik.com/t/one-more-strange-issue-nothing-is-not-nothing/166475/1)
     
     
     
    611
    Guest
    #6
    0
    08.05.2023 21:47:00
    Правильный синтаксис — «find where». Хотя он больше похож на «print where», обе страницы документации по скриптам и команда /export используют «[find property=value]» без «where». Автодополнение в терминале тоже подсказывает, что «where» для команды «find» необязательно.
     
     
     
    diamuxin
    Guest
    #7
    0
    10.10.2023 22:43:00
    С этим скриптом у меня такая же ошибка: «invalid internal item number». Он работает на hAP ac^2 и не работает на RB4011. Оба с версией v7.11.2.

    :local output  
    :local filename  
    :local sysname  [/system identity get name]

    :set filename  ($"sysname"."-"."Leases.txt")

    /ip dhcp-server lease  
    :foreach i in=[find] do={
       :local hname      [get $i host-name]
       :local activeMAC  [get $i active-mac-address]
       :local Address    [get $i address]
       :local macAddress [get $i mac-address]
       :local Status     [get $i status]
       :local Comment    [get $i comment]
       :local iface      "undefined"  
       
       /interface bridge host  
       :local searchresult [find where mac-address=$activeMAC]
       :if ([:len $searchresult] > 0) do={
           :set iface [get $searchresult on-interface]
       
           :if (([:typeof $hname] = "nil") && ($Status = "bound")) do={
               :set output ($output . ($Address . "\t" . $macAddress . "\t" . $Status . "\t" . $iface . "\t" . $Comment) . "\n")  
           }  
           :if (([:typeof $hname] != "nil") && ($Status = "bound")) do={
               :set output ($output . ($Address . "\t" . $macAddress . "\t" . $Status . "\t" . $iface . "\t" . $hname) . "\n")  
           }  
       }  
    }

    /file print file=$filename  
    :delay 2s  
    /file set $filename contents=$output

    ИЗМЕНЕНИЕ: Я ничего не понимаю, но в списке DHCP Lease был хост, из-за которого вылетала эта ошибка, после его отключения скрипт снова работает. Извиняюсь за это.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры