Скрипт на микротик для копирования файлов

Обновлено: 02.07.2024

Как гласит народная мудрость: существует два типа системных администраторов, те, которые еще не делают backup и те, кто уже его делает. Для устройств MikroTik иметь резервную копию с последними настройками тоже актуально т.к. устройство может выйти из строя или самый распространенный случай, когда хочешь сделать какие-то настройки по-быстрому, но что-то пошло не так.

Резервные копии в MikroTik бывают двух видов:

  1. Backup самого устройства, хранит в себе все настройки устройства, пользователей, пароли, сертификаты. Восстановление возможно только на том устройстве, на котором оно было создано. Восстановление на другом устройстве такой же модели возможно, но не желательно, надо понимать, что восстановятся абсолютно все настройки, такие как MAC адреса интерфейсов, это может привести к тому, что в сети появится два одинаковых устройства со всеми вытекающими. Восстановление на другом устройстве не гарантируется и нежелательно, ввиду разных конфигураций устройств и разном железе.
  2. Экспорт конфигурации. Экспортируются все настройки устройства кроме паролей пользователей, информации о железе (например, MAC адресов), установленных и выпущенных сертификатов. Файл формируется в виде скрипта, который можно выполнить на другом устройстве MikroTik. При запуске на другом устройстве не схожей конфигурации возможны появления ошибок, таких как некоторые интерфейсы не будут найдены.

Первый вариант подходит для полного восстановления состояния устройства на момент создания резервной копии. Отлично подходит для создания точки отката при настройке устройства. При создании есть возможность зашифровать backup с помощью пароля.

Второй вариант подходит если необходимо перенести конфигурацию на другое устройство, не обязательно такой же конфигурации. Отлично подходит для настройки устройств с типовой конфигурацией или замене одного устройства на другое.

В идеале создавать резервные копии лучше перед началом настройки устройства и при окончании настройки, но это мало кто делает и может привести к тому, что после внесения очередных изменений в устройство необходимо будет его восстановить.

Создание резервных копий вручную

mikrotik create single backup

Команда для создания резервной копии:

Файл резервной копии создается в корне файловой системы с расширением .backup. На устройствах с малым количеством flash памяти все файлы, находящиеся в корне при перезагрузке устройства, удаляются, в том числе и файлы backup, во избежание утери файла его необходимо перенести в любую папку.

mikrotik move single backup

Для создания файла резервной копии сразу в папке необходимо указать полный путь:

ВНИМАНИЕ! Если указанный файл резервной копии уже существует, то он будет перезаписан без предупреждения.

Выгруженная конфигурация сохраняется в файл с расширением .rsc .

mikrotik export configuration

Сохраненный файл конфигурации в корне файловой системы, так же, как и остальные файлы, на устройствах с малой flash памятью удается при перезагрузке, поэтому его необходимо перенести или сразу создавать в папке.

Для надежности сохранения важных резервных копий сохраняем их на компьютере или другом надежном месте, выделив файл в WinBox и перетащив его в нужную папку компьютера или другого хранилища.

Создание резервных копий по расписанию

Создаем скрипт выполняющий резервную копию устройства и файл с выгруженной конфигурацией. Т.к. резервных копий много не бывает, то, если файлы уже существуют, они будут переименованы. Что бы не плодить много файлов резервных копий на устройстве, особенно это актуально для устройств с небольшой flash памятью, файлы, которые уже были переименованы во время предыдущего выполнения скрипта будут удалены.

К сожалению, в предлагаемом устройством наборе команд нет команды копирования или переименования файлов, но файлы можно копировать под новым именем через FTP и последующим удалением оригинала.

Включаем сервис FTP, если он отключен, в меню IP -> Services. Для безопасности сервиса в поле Available From или в Firewall указываем с каких адресов можно заходить на FTP, обязательно указываем loopback адрес 127.0.0.1, для доступа backup скрипта и возможности копирования. Способ ограничения доступа (средствами сервиса FTP или Firewall) каждый выбирает сам лучший вариант для себя.

mikrotik enable ftp service

В меню System -> Users на вкладке Groups создаем группу доступа к FTP сервису, в параметрах Policies указываем только ftp , read и sensitive .

mikrotik create ftp access group

В том же меню на вкладке Users создаем пользователя для доступа к FTP, группу доступа Group выбираем созданную ранее.

mikrotik create ftp user

Файлы резервных копий будут храниться в папке backup , создать папку средствами MikroTik невозможно, поэтому открываем проводник на компьютере, создаем папку и перетаскиваем ее в раздел Files при помощи Drag and Drop.

В меню System -> Scripts создаем новый скрипт. В поле Name вводим наименование скрипта, в поле Source сам скрипт:

Первая часть скрипта, начинающаяся с :local - объявление переменных.

Вторая часть, начинающаяся с :set - присваивание значений объявленным переменным, где:

  • FILENAMEBACKUP - полный путь к файлу резервной копии устройства.
  • FILENAMEBACKUPRSC - полный путь к файлу выгружаемой конфигурации.
  • FILENAMEBACKUPprev - полный путь к файлу резервной копии устройства выполненной ранее.
  • FILENAMEBACKUPRSCprev - полный путь к файлу выгружаемой конфигурации выполненной ранее.
  • FTPUSERNAME - пользователь с доступом к FTP серверу.
  • FTPPASSWD - пароль пользователя FTP.

Далее ищется файл с расширением .0 сделанный две резервные копии назад и удаляется если найден, затем ищется файл резервной копии и через FTP сервер создается его копия с другим именем, а оригинал удаляется. Аналогичные действия делаются с файлами конфигурации. В конце выполняется резервное копирование.

mikrotik create backup script

Нажимаем кнопку Apply для сохранения скрипта и кнопку Run Script для запуска и проверки выполнения. После выполнения в меню Files должно появиться два свежих файла резервной копии. Нажимаем кнопку Run Script еще раз и предыдущие файлы должны переименоваться в файлы с расширением .0 и создаться два свежих файла резервной копии.

mikrotik backup files

В меню System -> Scheduler создаем расписание для запуска скрипта. В поле Name пишем название задания, в поле Start Tim e время выполнения, в поле Interval периодичность запуска расписания, например, резервная копия будет создаваться каждые 7 дней. В поле On Event прописываем запуск созданного ранее скрипта.

mikrotik backup schedule

Нажимаем кнопку OK , проверяем что расписание работает правильно.

Для повышения надежности хранения резервных копий созданные файлы рекомендуется скопировать в еще одно место хранения. Так как на MikroTik ранее был активирован сервис FTP, то для доступа к файлам backup можно использовать его. Пример скрипта для Unix систем, создадим файл /usr/local/scripts/copy_mikrotik_backups :

Заполним его скриптом:

В файл cron добавляем расписание выполнения созданного скрипта:

Восстановление устройства из резервной копии

Для восстановления MikroTik из резервной копии устройства копируем файл в раздел Files, выделяем его и нажимаем кнопку Restore. Помним, что backup предназначен только для того устройства, на котором оно создавалось, восстановление на другом устройстве не желательно и не гарантировано.

mikrotik restore from backup

Для восстановления устройства из файла конфигурации предварительно необходимо сбросить настройки в меню System -> Reset Configuration. По необходимости не забываем сохранить список пользователей. Импорт файла конфигурации:

Сброс настроек с сохранением списка пользователей и последующим импортом конфигурации из файла одной командой:

Если необходимо восстановить конфигурацию на другом устройстве с отличной конфигурацией железа, то восстановление лучше делать частями, копируя необходимые команды из файла и вставляя их в терминале.

Всем привет, в моей первой публикации на хабре хочу поделиться готовым решением для бэкапов устройств Mikrotik.

Для микротика предусмотрены два вида бэкапов конфигурации, это бинарный бэкап и экспорт конфигурации. Бинарный бэкап имеет свои преимущества и недостатки. Преимуществом является то, что после восстановления бинарного бэкапа у вас сохраняется вся конфигурация( с пользователями, паролями, импортированными для пользователей ssh-ключами); недостатком же является то, что такой бэкап нельзя восстановить на другого типа устройство.

В целом и общем это полноценный бэкап, его восстановление занимает мало времени и восстанавливает всю конфигурацию. Экспорт конфигурации как способ бэкапа в свою очередь отчасти сглаживает эти недостатки, являясь скриптом для ребилда микротика. Суть тут в том, что выводятся все настройки, которые могут быть экспортированы. Преимуществом является то, что можно посмотреть и пощупать, что же там экспортируется, а к недостаткам можно опять же отнести то, что это тоже упирается в модель. но чуть меньше. Иногда дело в количестве интерфейсов, иногда ещё в чём-то. Так же не все настройки могут быть экспортированы в текст(пользователи, файлы на усройстве, ssh-ключи).

В целом и общем, как я вынес для себя, совершенно необходимо иметь для себя оба варианта и желательно регулярно и обязательно автоматически. Идею я взял из вики микротика: раз и два.

Предложенный вариант бэкапов по почте или ftp мне не нравится тем, что тут всё либо по почте, либо по ftp, всё plaintext. Так же не нравится то, что надо держать какой-то ящик или ftp и микротики сами будут слать. Мне удобнее всё делать с сервера бэкапов.

По сути для бэкапа по ssh руками достаточно просто зайти на микротик, выполнить бэкап и забрать его. Соответственно это можно автоматизировать.

Как вы уже поняли, реализовалось это всё с помощью обычного bash-скрипта, далее он немного оброс мусором и тихо работает. Поэтому я решил его описать здесь чтобы получить какой-то фидбэк от тех, кому это может быть интересно.

Итак, переходим непосредственно к скрипту.

Файлы скрипта

Для работы скрипта используется исполняемый файл и параметром к нему указывается файл конфигурации.


Соответственно размещается бэкапный скрипт в директории /usr/local/bin/ для простоты поиска оного в PATH, а файлы конфигурации хранятся в /etc/mikrotik_backup/ в соответствии с FHS. Размещение файлов дело сугубо личное, мне просто так удобнее.

Исполняемый скрипт

Самая первая секция содержит shebang, проверки конфигурационного файла, не указав который, скрипт не выполнится. Далее идут дефолтные переменные, достаточно лаконичные, часть из которых вы можете переопределить в файле конфигурации конкретного устройства.


Далее идёт строка, которая делает source конфигурационного файла:


После идёт секция с некоторыми переменными, которые лучше задавать после того, как импортируется конфигурационный файл и системные утилиты, которые я для пущей надёжности ищу через which:


После идёт определение функций скрипта, описание я дам ниже:


Все функции подписаны, но я немного поясню. Функции fn_check_log fn_check_readme проверяют и создают первичное наполнение файлов LOG.TXT и README.TXT

fn_check_directory проверяет создана ли директория для устройства, которое вы описываете в директиве ST_HOSTNAME="" в конфиг-файле

fn_mikrotik_cleanup выполняет очистку кэша DNS и истории команд в консоли, чтобы не тянуть это в бэкап и в секурных целях.

fn_mikrotik_fixtime вещь опциональная, которая принудительно устанавливает ntp-сервер для обновления времени. В этой функции можно написать всё, что угодно, если вы хотите постоянно это выполнять. Можно так же не пользоваться этой функцией если нет нужды.

fn_backup_binary и fn_backup_export делают бинарный и экспорт-бэкапы соответственно. При чём стоит заметить, что вместо plaintext, создаётся зашифрованный экспорт-файл используя openssl. (Соответственно нужно иметь openssl в системе)

fn_backup_retention упаковывает бэкапы старше чем ST_RTN дней, которую вы задаёте в конфиг файле, если не используете стандарт(30 дней). Функция кладёт их в папку archive

fn_log в самом конце скрипта создаёт запись в файле LOG.TXT о статусе бэкапа

Конфигурационный файл устройства

Касательно файла конфигурации минимальная конфигурация это:


Остальные директивы конфиг файлы подробно описаны и являются опциональными, то есть имеют дефолтное значение:

Если вы хотите зашедулить выполнение, можно использовать пример cron задачи:

Итак, сразу об использовании в планировщике cron можете копировать и пользоваться моим решеним, но я немного поясню. Естественно все пути должны существовать и файлы должны быть доступны на чтение, а скприт на выполнение. Использование переменных в кроне не возбраняется и немного улучшает читабельность, когда кроновских задач у вас больше 50.

Операционная система RouterOS позволяет сохранить настройки MikroTik, и быстро восстановить резервную копию, чтобы возобновить работу устройства. Это очень удобно, если вы напортачили с настройками, или вам нужно выполнить одинаковую настройку нескольких устройств MikroTik. В этой статье мы расскажем, как создать резервную копию настроек MikroTik, восстановить ее или перенести на другое устройство.

Сохранение и восстановление настроек MikroTik

Чтобы сохранить настройки MikroTik, выполните следующее:

Сохранить настройки MikroTik

После этого в списке появится файл с именем MikroTik-xxxxxxxx-xxxx.backup , где ххххххxx-хххх - это дата и время создания файла.

Файл с бэкапом настроек MikroTik

Внимание! Файл MikroTik-xxxxxxxx-xxxx.backup предназначен для восстановления настроек только на устройстве, на котором он создан. Его нельзя использовать для переноса настроек на другое устройство. Иначе у вас перенесутся MAC-адреса интерфейсов, в сети будут два одинаковых устройства и возникнет конфликт.
Для переноса настроек используются специальные файлы в текстовом формате, описанные ниже в разделе Перенос настроек MikroTik на другое устройство.

Далее резервную копию конфигурации MikroTik можно сохранить на компьютер, перетащив файл на рабочий стол или в проводник Windows.

Сохранить настройки MikroTik на компьютер

Перед восстановлением настроек, нужно сбросить все настройки устройства, чтобы в нем не остались какие-то настройки из текущей конфигурации.

Сброс настроек MikroTik

После перезагрузки подключайтесь к устройству по MAC адресу, поскольку IP адрес будет отсутствовать. В программе Winbox нужно нажать мышкой на MAC-адрес устройства и нажать кнопку Connect.


Чтобы восстановить конфигурацию MikroTik, выполните следующее:

Восстановить настройки MikroTik

Перенос настроек MikroTik на другое устройство

Для переноса настроек на другое устройство MikroTik, нужно сохранить настройки в файл в текстовом виде. Этот файл можно будет редактировать, если возникнут проблемы при переносе настроек.

Переносить настройки можно только на устройства MikroTik со схожей аппаратной конфигурацией. Вы не сможете перенести настройки с роутера на 10 LAN портов, на роутер с 5-ю LAN портами. При этом будут выдаваться ошибки. Можно конечно вручную отредактировать файл с настройками, но это довольно сложный и долгий процесс.

Чтобы сохранить настройки MikroTik в текстовом формате, откройте меню New Terminal и выполните следующую команду:

Название файла может быть любым. В названии файла желательно указывать дату, чтобы потом не запутаться. В данном случае в названии файла указана дата 20170403 - 3 апреля 2017 года. Файлы с датой, указанной таким образом, будет очень удобно сортировать по имени в проводнике или в файловом менеджере Total Commander, FAR Manager или MC (Linux).

Далее нужно скопировать созданный файл в другое устройство. Для этого сначала перетащите файл на рабочий стол Windows. После этого перетащите его в новое устройство в меню Files.

Перед импортированием настроек, нужно сбросить конфигурацию устройства, иначе будет конфликт с текущими настройками и при импорте будут выдаваться ошибки.

Сброс настроек MikroTik

Чтобы импортировать настройки MikroTik, откройте меню New Terminal и выполните следующую команду:

При переносе настроек между похожими роутерами MikroTik с одинаковым количеством портов, но с разными процессорами или памятью, во время импорта могут возникать ошибки. Я как-то пытался перенести настройки между двумя очень схожими роутерами. При этом выдавало ошибку, что указанная частота памяти не поддерживается устройством. В этом случае откройте файл с настройками на компьютере, отредактируйте необходимую настройку или удалите ее.

Частичный перенос настроек

Бывают ситуации, когда нужно сохранить часть настроек, например, правила фаервола, скрипты, NAT, правила маркировки пакетов и т.п. Для этого помогут следующие команды:

ip address export file=ip.rsc
ip firewall mangle export file=mangle.rsc
ip firewall nat export file=nat.rsc
ip firewall filter export file=filter.rsc
queue simple export file=simple.rsc
ip dns export file=dns.rsc
system script export file=script.rsc
system scheduler export file=scheduler.rsc
tool e-mail export file=email.rsc
ip firewall address-list export file=address-list.rsc
ip route export file=route.rsc
ip dhcp-server network export file=network.rsc
queue type export file=type.rsc
queue tree export file=tree.rsc
queue simple export file=simple.rsc
interface ethernet export file=ethernet.rsc
ip pool export file=pool.rsc
ppp profile export file=profile.rsc
system logging export file=log.rsc

Автоматическое создание резервных настроек MikroTik и отправка на email

Чтобы не забывать делать резервные копии конфигурации MikroTik, вы можете автоматизировать этот процесс и отправлять бэкапы себе на email.

Создание скрипта

Откройте меню System - Scripts и нажмите "красный плюсик", чтобы добавить новый скрипт. В поле Name укажите название скрипта, в поле Source вставьте скрипт и нажмите кнопку OK.

Скрипт создания резервной копии настроек MikroTik и отправки на email

Чтобы протестировать работу скрипта, нажмите кнопку Run Script, и на ваш почтовый ящик будут высланы резервные копии. Процесс выполнения скрипта можно отслеживать в меню Log.

Скрипт для отправки резервной копии настроек MikroTik на email:

Для RouterOS v6.x

В примере указан скрипт для сервиса Gmail. При отправке через Gmail нужно предварительно разрешить ненадежным приложениям доступ к аккаунту. Для этого залогиньтесь, на странице "Мой аккаунт" перейдите в раздел "Ненадежные приложения" и выберите "Включить". Подробнее читайте Как разрешить ненадежным приложениям доступ к аккаунту.

Разрешить доступ ненадежных приложения к Gmail

Настройка планировщика

Теперь нужно настроить с какой периодичностью будут создаваться резервные копии, и отправляться на email. Для этого настроим планировщик (Sheduler).

Откройте меню System - Sheduler и нажмите кнопку "плюсик", чтобы добавить новую задачу.

MikroTik: Добавить задание в планировщик

В открывшемся окне настраиваем параметры задачи:

  • в поле Name указываем имя задачи, например send_backup_to_email;
  • в поле Interval указываем с какой периодичностью будет выполняться скрипт. Мы указали интервал 24 часа. Для отладки работы планировщика укажите интервал 5 минут и текущее время Start Time. И не забудьте настроить время на MikroTik в меню System - Clock;
  • в поле On Event указываем, какую команду необходимо выполнить при запуске задачи. Мы указали команду /system script run backup_to_email, которая запускает скрипт backup_to_email;
  • нажимаем кнопку OK для сохранения задачи.

MikroTik: Настройка параметров задачи планировщика

Теперь каждый день в 00:00:00 будет создаваться резервная конфигурация MikroTik и отправляться вам на email.

Бекап по частям
Микротик1 (экспорт):

ip firewall export file =ip-firewall.rsc
ip pool export file =ip-pool.rsc
ip route export file =ip-route.rsc import file =ip-firewall.rsc
import file =ip-pool.rsc
import file =ip-route.rsc

Добавляем автоматически 254 маршрута:

Указываем мост одной командой для всех интерфейсов:

> interface bridge port add interface =ether1 bridge =bridge-local; ip address set 0 interface =bridge-local; ip dhcp-server set 0 interface =bridge-local

Меняем MAC на интерфейсе на свой:

/ interface ethernet set ether1 mac-address=00:01:00:00:00:00

Проверяем шлюз провайдера, если он отличается от статического - синхронизируем:

Если через PPPOE соединение некоторые сайты не открываются.
Необходимо сделать изменения в Firewall > Mangle.
Удалить динамические правила change MSS all ppp.
Добавить правило:

/ ip firewall mangle add action =change-mss chain =forward new-mss= 1360 protocol =tcp tcp-flags=syn tcp-mss= 1453 - 65535
Изменить профиль, что бы динамические правила больше не создавались:
PPP > Prifiles > Default > General > Change TCP MSS “no”

Локальное перенаправление портов:

/ ip firewall nat
add action =dst-nat chain =dstnat dst-address=192.168.224.1 dst-port= 8181 \
in-interface=bridge-local protocol =tcp src-address=192.168.224.0 / 24 \
to-addresses=192.168.224.20 to-ports= 8080
add action =dst-nat chain =dstnat dst-address=192.168.224.1 dst-port= 8182 \
in-interface=bridge-local protocol =tcp src-address=192.168.224.0 / 24 \
to-addresses=192.168.224.20 to-ports= 555
add action =src-nat chain =srcnat dst-address=192.168.224.20 dst-port= 8080 \
out-interface=bridge-local protocol =tcp src-address=192.168.224.0 / 24 \
to-addresses=192.168.224.1 to-ports= 8181
add action =src-nat chain =srcnat dst-address=192.168.224.20 dst-port= 555 \
out-interface=bridge-local protocol =tcp src-address=192.168.224.0 / 24 \
to-addresses=192.168.224.1 to-ports= 8182

:local NOIPUser "логин_ноип"
:local NOIPPass "пароль_ноип"
:local WANInter "интерфейс_в_инет"

Дописать текст в файл:

Проверка средней скорости интернет и запись в log файл:

:local txAvg 0
:local rxAvg 0

Цвет лога:

log info "blah blah this log is in black"
log warning "blah blah this log is in blue"
log error "blah blah this log is in red"

Проверка баланса, оператор Life (автор AHouse):

Скрипт проверяет смену IP домена DDNS и меняет IP в поле "Host:" NetWatch

Сброс повисших сессий на порту 5060:

Реконект активного соединения ppp:

Комментарии:

/tool sms set receive-enabled=yes
:delay 30s

:local SMSMSG ""
:local SMSPHONE ""
:local SMSDate ""
:local InboxSMSCount [/tool sms inbox print count-only]
:if ( $DEBUGMODE="True" ) do=
:if ($InboxSMSCount >0) do=

:local InBoxSMSArray [:toarray [/tool sms inbox find]]

:foreach CurrentSMS in=$InBoxSMSArray do=

Скрипт простой, но провозился несколько часиков.

Читайте также: