Автоматизоване резервне копіювання маршрутизаторів MikroTik
- Перегляди: 1112
Суть скрипта в тому, що, якщо у вас є 50 + маршрутизаторів (хоча і до 50-ти це теж корисно) вам не треба заходити і самостійно, вручну робитиbackupвашего маршрутизатора.
На початку для того щоб розуміти, що це за звір, і з чим його їдять, давайте розглянемо функції даного скрипта:
- - З'єднання з аутентифікацією по паролю і виконання операцій резервного копіювання
- - З'єднання з аутентифікацією по ключу і виконання операцій резервного копіювання.
- - Створення backup
- - Виконання команды по ssh
- - Отримання файлу з ssh
- - Перевірка чи відкритий порт
- - Перевіряє чи є файл, якщо немає, створює його
- - Перевіряє чи існує каталог
- - Відправка звіту поштою
- - Формує звіт по різниці в конфігураціях
Скрипт backup-ів написаний на мові Python, взаємодіє, на жаль, тільки з версією 2.7.x.Для повної, і комфортної роботи скрипта потрібні додаткові модуліPythonтаких как:
- - Paramiko(модуль для роботи з ssh в python)
- - PyYaml(для роботи з даними, введення / виведення)
ПідготовкаMikroTik
*Розглянуті дії виконуються безпосередньо через WinBox або по протоколуSSH.
Як ми вже зрозуміли наш скрипт звертається до кожного з маршрутизаторів по протоколу SSH(Secure Shell), за стандартом він має порт 22 TCP,ми розглянемо варіант резервного копіювання по Login/Password.
Для початку переконайтеся, що у вас включений Сервіс SSH,виконайте в терміналі MikroTikкоманду ipservice print, якщо даний сервіс запущений, то вам залишається додати адреси, з яких дозволено створювати підключення поSSH, для цього виконайте команду ip service set ssh address= (ваш ip or range).
Після цього у вас з'являться ваші адреси в рядкуSSH, у вкладці IP> Service.
Далі нам потрібен користувач з правами, який зможе підключатися і виконувати команди. Якщо у вас вже є користувач, який буде відповідати за це, то пропустіть цей крок, якщо немає, то виконайте команду
user set password=password login
Останній крок, це відкриття порту SSHдля підключення в Firewall, раніше ми тільки сказали, що певними адресами можна підключатися за цим протоколом, але нам же ще треба і дозволити робити це. Для цього ми повинні написати правило в (IP> Firewall> Filter),або додати через термінал командою :
ip firewall filter add chain=input dst-port=22 action=accept comment=Allow_SSH
Напевно, виникло питання про те, що, “ми ж світимо цим портом на ліво і на право!”, ні, для того щоб запобігти підключення з інших адрес ми вписали справжні в IP> Servicesв строке SSH. Ви можете переконається в цьому самі підключившись з іншого IPадреса.
На цьому підготовка маршрутизатора закінчена.
Підготовка платформи для запуску скрипта
Перше що потрібно це встановити сам Python 2.7.x, для цього ви можете завантажити його з офіційного сайту, або скористатися мої скриптом який все зробить за вас, розглянемо для початку підготовку без мого скрипта.
- Завантажуємо Python (https://www.python./ftp/python/2.7.13/python-2.7.13.msi)
- При встановленні Pythonобов'язково встановіть галочку поруч з AddPython.exe to Path
- Після встановленняPythonвідкрийте командний рядок від імені Адміністратора і виконайте дві команди (установка модулів, читай вище)
- pip install paramiko
- pip install pyyaml
- Далі створіть папку на диску C: під ім'ям MikroBack, і перемістіть туди всі файли з архіву (https://drive.google.com/a/osi.in.ua/file/d/0B8GteDVNkTRddElWU0stNGI5NTA/view?usp=sharing)
- Після цього внесіть під себе файл config.conf, ip_list.txt
- Тепер ви сміливо можете запускати файл backup.py і спостерігати за резервування даних вашого маршрутизатора.
Розглянемо скрипт, який все вищеперелічене робить за вас:
(
- - Відключити на 5-10 хв антивірус, так як він SFX (всі не люблять SFX)
- - Чекати 5-10 мин
- - Вуаля, скрипт розгорнув себе на диск C: і доданий в Планувальник завдань, який буде виконуватися кожен день о 8:00 AM
- - Відредагуйте під себе файл config.conf, ip_list.txtв папці C:\MikroBack
Що робить скрипт під час установки, все теж що ми описували раніше, скрипт OpenSource, відкривайте, редагуйте …
На цьому все )
Для реалізації завдання було взято ресурс: