Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • 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
    Невозможно прочитать файл размером больше 4085 байт.

    Невозможно прочитать файл размером больше 4085 байт.

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Невозможно прочитать файл размером больше 4085 байт., RouterOS
     
    martini
    Guest
    #1
    0
    28.04.2010 08:28:00
    Попробуйте использовать этот скрипт:  
    global content [/file get [/file find name=test.txt] contents];
    :global contentLen [:len $content];

    :global lineEnd 0;  
    :global line "";  
    :global lastEnd 0;  

    :do {  
          :set lineEnd [:find $content "\r\n" $lastEnd];
          :set line [:pick $content $lastEnd $lineEnd];
          :set lastEnd ($lineEnd + 2);  

          :local tmpArray [:toarray $line];
          :if ([:pick $tmpArray 0] != "") do={
              :put $tmpArray;  
              /ppp secret add name=[:pick $tmpArray 0] password=[:pick $tmpArray 1] \
                  local-address=[:pick $tmpArray 2] remote-address=[:pick $tmpArray 3] \
                  profile=[:pick $tmpArray 4] service=[:pick $tmpArray 5];
          }  
    } while ($lineEnd < $contentLen)  

    Но если файл больше 4085 байт, то ничего не происходит. Кто-нибудь может помочь с этим?
     
     
     
    dynek
    Guest
    #2
    0
    15.04.2016 12:11:00
    Спустя 6 лет, 4 КБ всё ещё максимальный размер файлов, которые можно прочитать из скрипта Mikrotik? Звучит как первоапрельская шутка и заставляет меня вернуться в те времена, когда компьютеры были примерно 30 лет назад.
     
     
     
    jarda
    Guest
    #3
    0
    15.04.2016 13:19:00
    Даже 30 лет назад не было такого низкого порога, насколько я помню.
     
     
     
    dssmiktik
    Guest
    #4
    0
    16.04.2016 03:47:00
    Я думаю, это может быть связано с механизмом буферизации, используемым для получения или потоковой передачи данных. В какой-то момент я думал, что это ограничение касается и комментариев, но теперь, кажется, это уже не так. В любом случае было бы здорово иметь хоть какой-то потоковый API, даже если мы можем буферизовать только куски по 4 Кб — в итоге мы всё равно сможем читать или записывать весь файл.
     
     
     
    midenok
    Guest
    #5
    0
    25.04.2016 16:40:00
    Привет, это значит, что я не могу читать файлы по частям??? Нет других способов читать кусками? Я хочу распарсить http://txt.proxyspy.net/proxy.txt
     
     
     
    dssmiktik
    Guest
    #6
    0
    26.04.2016 02:54:00
    К сожалению, нет, если содержимое больше 4 КБ. Вы можете настроить внешний сервис, который преобразует данные в строку RouterOS через локальную переменную. Это позволит использовать весь файл, при условии, что памяти хватит. Если файл уже есть на роутере, можно использовать fetch для отправки файла на внешний сервис и получать потоковые данные таким образом. Это не идеально, но, в общем, работает.
     
     
     
    midenok
    Guest
    #7
    0
    26.04.2016 05:37:00
    Нет, гораздо проще запустить perl под metarouter. Но меня поражает, насколько примитивен и убог routerscript. Он просто не способен сделать что-то чуть сложнее, чем 2+2. А если уж по какой-то звёздной случайности сможет, то это будет большой головной болью и настоящими шаманскими плясками…
     
     
     
    macsrwe
    Guest
    #8
    0
    13.05.2016 07:10:00
    !!! Сегодня вечером я потратил пять часов на написание скрипта, который должен периодически запускаться на каждом нашем роутере (включая CPE), чтобы обновлять общие конфигурационные скрипты, если на сервере появлялись их новые версии. Поскольку получение по FTP не сохраняет дату изменения исходного файла, скрипт должен был определять, совпадает ли содержимое файла A с содержимым файла B. Перед тем как писать скрипт, я проверял этот метод на меньших файлах — там всё работало как надо. Я дописал весь скрипт, и только потом выяснилось, что ROS всегда говорит, что файлы одинаковые, независимо от того, так ли это на самом деле. Пять часов просто впустую, которые я мог бы потратить на что-то более полезное. И теперь я пришёл к выводу, что другого способа сделать то, что мне нужно, просто нет.
     
     
     
    paramex
    Guest
    #9
    0
    09.11.2020 21:50:00
    Положите в папку /hotspot, читается по ссылке. Пример: ваш DNS: 192.168.100.1 или langit.net, файл: contoh.txt, тип: http://langit.net/contoh.txt
     
     
     
    eworm
    Guest
    #10
    0
    10.11.2020 15:24:00
    Конечно, есть. Единственное ограничение — это размер файла. Например, это не касается размера скрипта ( /system script ). Так что сначала загрузите скрипт в переменную, затем сохраните его как скрипт ( /system script add name=configuration-update source=$FetchedScript ). После этого сравните недавно загруженный скрипт с сохранённым. Я использую что-то похожее с моими собранными скриптами, ссылка в моей подписи. Я спокойно могу работать с скриптами больше 4k. (На самом деле, я уже думал над скриптом для передачи и управления обновлениями конфигурации… Но пока руки до этого не дошли.)
     
     
     
    msatter
    Guest
    #11
    0
    10.11.2020 17:19:00
    Файл размером до 64КБ можно считать за один раз в массив. .RSC файлы могут быть намного больше, и я пока не нашёл ограничений, кроме памяти самого роутера. Я всё ещё ищу способ вставлять код как insert, а не в скрипт или глобальный.
     
     
     
    macsrwe
    Guest
    #12
    0
    10.11.2020 20:32:00
    Вот здесь вы просто отложили проблему в долгий ящик. Запускаемый скрипт не может сравнить два файла скрипта, чтобы определить, одинаковы они или нет, из-за ограничения на размер переменной — именно на это я изначально жаловался. Мой первоначальный комментарий был сделан много лет назад. Я обходил проблему, просто каждый вечер скачивая «новый» скрипт, не утруждая себя проверкой, изменился он или нет.
     
     
     
    eworm
    Guest
    #13
    0
    11.11.2020 08:38:00
    Пожалуйста, перечитай моё сообщение ещё раз. Ограничение касается не размера переменной — а именно чтения из файла. Если не читать из файла, можно использовать больше 4к. Я это пропустил… И интересно, менялся ли размер переменной с тех пор. То, что я описал, работает минимум с 2018 года.
     
     
     
    eworm
    Guest
    #14
    0
    11.11.2020 08:54:00
    Ах, вы правы, в 2016 это не работало. То, что я описал, требует присвоения значения переменной, которое появилось с RouterOS 6.43 в конце 2018 года.
     
     
     
    PackElend
    Guest
    #15
    0
    23.04.2022 14:26:00
    Под «fetch» ты имеешь в виду /tool fetch как :global temp [/file get "01_scripts/testbig.rsc" contents]? Это тоже не работает?
     
     
     
    PackElend
    Guest
    #16
    0
    03.05.2022 20:28:00
    Понял, для локальной (только LAN) передачи и развёртывания:  
    :global FetchedScript [/tool fetch url="ftp://10.10.9.1/01a_scripts_MGMT/test.rsc" user=ftp mode=ftp password=1234 port=21 host="" as-value output=user ];
    /system script add name=test-fetch-to-script source=$FetchedScript
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры