Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • 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
     
    teslasystems
    Guest
    #1
    0
    21.01.2025 16:37:00
    Привет. Бывают ситуации, когда данные хранятся на RAM-диске (для быстрого доступа или чтобы избежать износа флеша), и эти данные нужно сохранить на постоянное хранилище при перезагрузке роутера. Сейчас файлы можно либо копировать вручную, либо создавать скрипт «SafeReboot», который сделает это за вас, но его нужно запускать каждый раз перед перезагрузкой роутера. А можно просто забыть это сделать, и тогда сохранение не сработает, например, при обновлении RouterOS через «Download&Install».

    Чтобы решить эту проблему, система должна автоматически запускать скрипт каждый раз при перезагрузке или выключении. Тогда можно будет выполнить код, который сохранит все данные. Важно, чтобы скрипт возвращал «обратную связь» — проверялось, успешно ли выполнен код или нет. Если возникнет ошибка, перезагрузка или выключение должны быть отменены. Это можно реализовать через проверку значения некоторой переменной, которую задаст пользователь в коде. Например, назовём её $ExecResult. Если она true — перезагрузка продолжается, если false — отменяется. Если во время выполнения самого кода возникнет ошибка, тоже нужно отменить перезагрузку. Вот как я это вижу. Пожалуйста, рассмотрите возможность реализации такого функционала.
     
     
     
    optio
    Guest
    #2
    0
    09.02.2025 15:37:00
    Но даже с таким подходом у вас возникнут проблемы, если ROS не будет корректно перезагружен или выключен, например, из-за отключения питания. Если у вас есть данные, которые должны быть доступны при загрузке в любом случае перезагрузки или выключения, то они должны храниться в постоянном хранилище. Если вас беспокоит износ внутренней флеш-памяти, используйте внешний или сетевой диск. Сетевой диск может работать быстрее медленного USB. Если у вас много операций чтения, для ещё более быстрого доступа можно использовать комбинацию tmpfs и постоянного хранилища: при создании, обновлении или удалении файла в постоянном хранилище этот файл копируется или удаляется из tmpfs; а чтение файлов всегда происходит из tmpfs по тому же относительному пути. Также можно создать скрипт запуска, который просто копирует всё из постоянного хранилища в tmpfs. В таком случае вы получите и постоянство данных, и быструю скорость чтения.

    На мой взгляд, лучше реализовать в ROS функцию для постоянных глобальных переменных (например, новый раздел в /system/script в виде хранилища ключ-значение, сохраняемого в конфигурации ROS) с возможностью устанавливать флаг секретности (если он установлен, элемент можно экспортировать только с помощью show-sensitive, а в интерфейсе его значение будет отображаться в замаскированном виде). Это предпочтительнее, чем записывать их в файлы или в какие-то элементы конфигурации ROS, вроде Layer7 или PPP secret.
     
     
     
    teslasystems
    Guest
    #3
    0
    09.02.2025 16:04:00
    Наличие ИБП для предотвращения потерй питания — это ответственность пользователя, это само собой разумеется. Да, в данном случае используется комбинация tmpfs и постоянного хранилища. Можно при загрузке переносить данные из хранилища в оперативную память, я уже пользуюсь скриптом для этого, но механизма для обратной операции — сохранения данных при перезагрузке или выключении системы — нет. В текущей реализации это нужно делать вручную.
     
     
     
    optio
    Guest
    #4
    0
    09.02.2025 16:13:00
    На данный момент, чтобы избежать ручной работы, при создании/изменении/удалении файла на постоянном хранилище можно в том же скрипте скопировать его или удалить из tmpfs. Это избыточная операция, но она сработает. Такой подход приведёт к большему количеству операций записи на постоянное хранилище, чем если делать это только при завершении работы, зато будет надежнее. Скрипт запуска выполнит синхронизацию при следующей загрузке.
     
     
     
    teslasystems
    Guest
    #5
    0
    09.02.2025 17:48:00
    В моём случае ручная операция — это копирование из tmpfs в постоянное хранилище перед перезагрузкой, ничего больше. Я не делаю ничего с самим хранилищем, только копирую из хранилища в оперативную память при запуске (скриптом, автоматически) и наоборот — при перезагрузке/выключении (вручную). Сейчас эту операцию нельзя как-то избежать, кроме как добавить функцию запуска скрипта перед перезагрузкой/выключением. Делать бэкапы каждые 10 минут тоже не вариант, потому что тогда вообще нет смысла использовать tmpfs.
     
     
     
    optio
    Guest
    #6
    0
    09.02.2025 18:14:00
    Почему такая проблема с записью файлов на постоянное хранилище? Сколько записей в секунду у тебя для таких файлов? Например, у меня есть USB-флешка для хранения контейнера, Pi-hole в контейнере пишет логи, обновляет базу adlist каждый день и так далее. Он работает годами без проблем, а если сломается — куплю другую флешку и восстановлю файлы из резервной копии.
     
     
     
    teslasystems
    Guest
    #7
    0
    09.02.2025 19:14:00
    В моём случае это примерно 20-30 ГБ в день. Но, при всём уважении, тема была создана для решения конкретной проблемы управления данными при использовании ОЗУ для хранения, а не для выбора типа накопителя. Есть разные причины, по которым нельзя или не стоит использовать HDD, это не только высокая скорость записи и более быстрый доступ. Бывают ситуации, когда у вас просто нет HDD, и решить это не так просто, как «сходи в магазин и купи». Кроме того, подключение USB-HDD само по себе не очень надёжно — оно может внезапно перестать работать из-за проблем с кабелем, например плохого контакта, окисления, грязи и т. п., что приведёт к повреждению данных. В таких и других случаях внутренний RAM-диск — это решение.
     
     
     
    optio
    Guest
    #8
    0
    09.02.2025 19:27:00
    Я в курсе твоей просьбы и, честно говоря, сомневаюсь, что её реализуют, поэтому пытаюсь разобраться, почему ты не можешь использовать постоянное хранилище и ищу обходные пути. 20-30 ГБ в день — это не так много для внешнего SSD/NVMe диска, для USB-флешки — может быть. Да, связь может стать проблемой, если устройство на улице, если нет — я бы не волновался. Другой вариант — сетевой диск, но в конце концов всё может сломаться в какой-то момент, даже ИБП, если ты на него рассчитываешь и думаешь, что благодаря этому хранилище всегда будет синхронизировано.
     
     
     
    teslasystems
    Guest
    #9
    0
    09.02.2025 20:05:00
    Ну, это не только чтобы решить мои собственные проблемы, но и может помочь с похожими проблемами у других. Кстати, уже где-то видел похожие запросы в интернете. Я не согласен с твоим утверждением про SSD — 30 ГБ в день для них довольно много, хотя многое зависит от бренда и типа. Что касается USB-соединений, меня это особо не пугает, с такими проблемами я сталкивался не раз в домашних условиях. То, что всё может сломаться, не значит, что нужно игнорировать возможные точки отказа — их надо сводить к минимуму. Лично я уже терял данные из-за глупых причин, вроде неудачного HDD или плохо подключённого кабеля. Это было очень неприятно, и я не хочу повторять такие ошибки. Но это уже другая тема.
     
     
     
    optio
    Guest
    #10
    0
    09.02.2025 20:20:00
    Немного информации о сроке службы SSD: https://www.ionos.com/digitalguide/server/security/ssd-life-span/. Что касается нестабильных соединений, такое может происходить, если часто подключать и отключать диск от устройства, но, думаю, это не относится к устройствам, которые не являются переносными, например, роутеру. Если только это не какой-нибудь роуд-воин или LTE-роутер, который используют в поездках, но сомневаюсь, что такие роутеры будут делать столько операций записи файлов с помощью скрипта rsc.
     
     
     
    teslasystems
    Guest
    #11
    0
    09.02.2025 20:41:00
    Из моего собственного опыта всё наоборот. Большинство поломок происходило с неподвижными кабелями, к которым никогда не прикасаются. Могу даже объяснить почему, но мы уже слишком далеко от темы.
     
     
     
    optio
    Guest
    #12
    0
    09.02.2025 20:49:00
    Странно, если только ваши устройства не находятся в зоне, где часто бывают землетрясения, не подвергаются другим фоновым вибрациям или не размещены в помещениях с высокой влажностью. Но в таком случае я бы вообще волновался за состояние устройств, а не только за соединения.
     
     
     
    teslasystems
    Guest
    #13
    0
    09.02.2025 21:08:00
    Нет, обычное офисное здание. На самом деле там нет ничего странного. В таких соединениях постепенно накапливается пыль и образуется окисление. В итоге это приводит к плохому контакту и сбоям. Но если регулярно включать и выключать, то эти факторы в основном устраняются трением. Давайте прекратим уходить в сторону.
     
     
     
    optio
    Guest
    #14
    0
    09.02.2025 21:22:00
    Пыльное место, но с этим тоже можно справиться. Ладно, давайте по делу…
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры