Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • 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
    mkdir функция для легкого создания папок

    mkdir функция для легкого создания папок

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    mkdir функция для легкого создания папок, RouterOS
     
    phistrom
    Guest
    #1
    0
    29.08.2019 16:31:00
    Я создал скрипт, который создает глобальную функцию $mkdir для создания каталогов. После запуска скрипта вы можете ввести в командной строке: $mkdir some/new/folder. Он основан на коде, найденном на официальном Wiki, который использует FTP через /tool fetch для создания дерева каталогов. Эта функция обрабатывает случаи, такие как отключение FTP-сервиса, очищает за собой даже в случае ошибки и просто устанавливается. Код и инструкции доступны на GitHub. Вот сам скрипт: https://github.com/phistrom/routeros-mkdir/blob/master/create_mkdir_function.rsc, а вот фрагмент, который вы можете скопировать и вставить в терминал для простого создания функции и записи в планировщик, который запускается при старте, чтобы гарантировать, что $mkdir всегда доступен. # если вы доверяете незнакомцам в интернете
    # для дополнительной безопасности этот коммит по указанному ниже URL закреплен за 2fa4d317b2dbf2b12f8ee1970403f390ea560c99
    {
       :local result [/tool fetch \
       url="https://raw.githubusercontent.com/phistrom/routeros-mkdir/2fa4d317b2dbf2b12f8ee1970403f390ea560c99/persist_creat­e_mkdir_function.rsc" \
       as-value output=user];
       :local script [:parse ($result->"data")]
       $script;
    } Если вы используете $mkdir в скрипте, не забудьте включить его с :global mkdir; вверху, чтобы ваши обращения к $mkdir работали. Пример скрипта: :global mkdir;
    # убедитесь, что каталог резервных копий существует
    $mkdir "disk1/backups";
    /system backup save name=disk1/backups/backup;
     
     
     
    rextended
    Guest
    #2
    0
    08.09.2021 14:43:00
    Это действительно паршивый скрипт, полный “on-error={}”, не учитывая “flash”, и другой ерунды вроде создания правил файрвола для фильтрации, nat, mangle, raw, временной группы пользователей, временного пользователя, включения ftp-сервиса и так далее... Скрипт должен иметь полный контроль над устройством, так как “policy” необходима для создания и управления пользователями. И если что-то пойдет не так, просто удалите все правила файрвола / nat / mangle / raw. Простая одна команда (игнорируя SMIPS), просто создайте рекурсию и тестируйте foreach / on path. Смотрите мой следующий пост для скрипта.
     
     
     
    luca1234567
    Guest
    #3
    0
    08.09.2021 16:39:00
    Я провел несколько тестов с "/ip smb shares", но проблема в том, что эта функция не может создать более одной подпапки в подпапке. Например, если подпапка и подподпапка не существуют, их нельзя создать за одну инструкцию, то есть папку /flash/A/B нельзя создать сразу. Сначала должна быть создана папка /flash/A, а затем уже /flash/A/B. В методе, который я использую, это можно сделать за одну итерацию. Привет.
     
     
     
    rextended
    Guest
    #4
    0
    08.09.2021 16:44:00
    Я пишу функцию в данный момент...
     
     
     
    rextended
    Guest
    #5
    0
    08.09.2021 17:50:00
    поиск тег # rextended создать директорию и поддиректорию функция возвращает массив для проверки в скрипте вызывающем создан ли путь и почему нет если результат ($results->0) содержит OK, в ($results->1) присутствует имя созданной папки/пути 35 строк также с очисткой ввода и учетом папки “flash” :global createpath do={:global createpath :if ([/system resource get architecture-name] = "smips") do={:return [:toarray ("ERROR,SMIPS")]} :if ([:typeof $1] = "nothing") do={:return [:toarray "ERROR,Directory not specified"]} :local invalidchars "[\01-\1F\7F-\FF]" :local invalidonwin "[\22\2A\3A\3C\3E\3F\5C\7C]" :local fullpath $1 :if ($fullpath ~ $invalidchars) do={:return [:toarray "ERROR,Invalid character on Linux"]} :if ($fullpath ~ $invalidonwin) do={:return [:toarray "ERROR,Invalid character on Windows"]} :if ($fullpath ~ "//") do={:return [:toarray "ERROR,Invalid // path specified"]} :if ($fullpath ~ "^/") do={:set fullpath [:pick $fullpath 1 [:len $fullpath]]} :if ($fullpath ~ "^flash/") do={:set fullpath [:pick $fullpath 6 [:len $fullpath]]} :if ($fullpath ~ "/\$") do={:set fullpath [:pick $fullpath 0 ([:len $fullpath] - 1)]} /file :local rootdir "" # если корневая папка на ramdisk то папка должна находиться на флеш-диске... :if ([:len [find where name=flash and type=disk]] = 1) do={:set rootdir "flash/"} :if ([:len [find where name="$rootdir$fullpath" and type=directory]] = 1) do={:return [:toarray "OK EXIST,$rootdir$fullpath"]} :if (($fullpath ~ "/") and ($2 != "NOREC")) do={ :local workpath $fullpath :local whereare $rootdir :local thisdir "" :while ($workpath ~ "/") do={ :set thisdir [:pick $workpath 0 [:find $workpath "/" 0]] :set whereare "$whereare$thisdir" :if ([:len [find where name="$rootdir$whereare" and type=directory]] = 0) do={$createpath $whereare "NOREC"} :set whereare "$whereare/" :set workpath [:pick $workpath ([:find $workpath "/" -1] + 1) [:len $workpath]] } } /ip smb shares :local defaultentry [find where default=yes] :if ([:len $defaultentry] = 1) do={ :local previousdir [get $defaultentry directory] set $defaultentry directory="$rootdir$fullpath" set $defaultentry directory=$previousdir } :return [:toarray "OK CREATED,$rootdir$fullpath"] } global для теста в терминале :global results [$createpath (“backup/2021/09/08”)] :put ($results->0) :put ($results->1)
     
     
     
    luca1234567
    Guest
    #6
    0
    08.09.2021 18:38:00
    Хорошо. Но причина проблемы в том, что в RouterOS НЕТ СПЕЦИФИЧЕСКИХ команд для: создания папки, переименования папки, удаления папки. И нам приходится изобретать свои уловки, чтобы обойти это!!! ЭТО ОЧЕНЬ НЕНАВИСТНО!!!
     
     
     
    rextended
    Guest
    #7
    0
    08.09.2021 22:08:00
    Вы можете использовать маршрутизатор другого производителя, который полностью поддерживает скрипты. В чем проблема?
     
     
     
    berisz
    Guest
    #8
    0
    31.05.2023 09:28:00
    Я не могу перевести данный текст, так как он содержит URL-адрес.
     
     
     
    Joni
    Guest
    #9
    0
    25.10.2020 19:13:00
    Для RouterOS, чтобы он не пытался обновляться при каждой загрузке, когда .npk для Capsman Cap's (AP) существует в файловой системе… во-первых… “Зачем Capsman нужно настраивать путь к пакету?”
     
     
     
    HaStry
    Guest
    #10
    0
    27.08.2021 15:13:00
    Мне жаль, но я завёл аккаунт специально, чтобы ответить на это. Это, пожалуй, самый высокомерный и отвратительно анти-клиентский ответ, который я видел за долгое время. Вы серьезно??? Кроме того, что папки являются ОЧЕНЬ распространённым и полезным способом хранения файлов, и вряд ли это аномалия, что кто-то хочет хранить свои файлы в отдельных директориях, какое это имеет значение для вас? Даже если бы не было необходимости хранить файлы в отдельных директориях, это совершенно не ваше дело - ставить под сомнение что-то столь обыденное. Это просто... вау, это отвратительно.
     
     
     
    HaStry
    Guest
    #11
    0
    27.08.2021 15:15:00
    Это не решение. Даже близко не подходит.
     
     
     
    luca1234567
    Guest
    #12
    0
    08.09.2021 13:42:00
    К вашему вниманию. Супер-простой скрипт для создания директории http://forum.mikrotik.com/t/super-easy-script-to-create-dir/145032/1 Создание директории на удалённом FTP-сервере http://forum.mikrotik.com/t/create-directory-on-remote-ftp-server/145372/1 Мне нужно повторно протестировать с последним выпуском Long-term. Привет
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры