Автоматизация создания бекапов с устройств Mikrotik на Linux

Создавать бекапы оборудования Mikrotik будем с помощью Bash-скрипта на Ubuntu 14.04 Trusty Tahr. Входе выполнения скрипта, будет осуществлен прозрачный вход на оборудование Mikrotik (как настроить прозрачное подключение к Mikrotik по SSH, читаем тут). Так же бекапы будем хранить на сетевом ресурсе, поэтому в примере скрипта будет выполнено монтирование сетевого диска.

 

Предполагается создание бекапа не одного устройства Mikrotik, поэтому подготовим заранее текстовый файл со списком IP-адресов всех устройств Mikrotik, которых хотим делать бекап.

Создаем файл скрипта:

 

И вписываем текст скрипта, весь скрипт с комментариями, поэтому разобраться в нем и подставить свои данные не должно составить труда.

 

Делаем скрипт исполняемым:

 

Запускаем скрипт и проверяем его работу. В итоге будут созданы папки по каждому оборудованию и в каждой папке будут вот так располагаться бекапы с лог-файлами. 

 

 

Добавим в планировщик (crontab) выполнение его по заданному времени

Выполнять скрипт мы будем каждый день в 23:50

 

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

 

Понравилась или оказалась полезной статья, поблагодари автора

 

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
Загрузка...

Всего комментариев: 7 Комментировать

  1. Marko /

    Привет, я люблю ваш скрипт, но у меня есть одна проблема 🙁 есть ли какая-либо возможность для резервного копирования папки, также содержат личность mikrotik? Можете ли вы помочь мне с этим? Спасибо! Алос, я использую google translate, так что извините, если что-то неправильно переведено.

  2. Жаконда / Автор записи

    Добрый день! Не совсем понятно что имели ввиду «резервного копирования папки, также содержат личность mikrotik?» Напишите на английском вопрос, посмотрим.

  3. Marko /

    Hehe ok 🙂 i will try. When script makes new folder of mikrotik device from addresss_mikrotik folder name contain only ip address from list «e.g. 192.168.1.88» but i will like when new folder is maid to contain also identity of mikrotik from backup is made. So i would like to have somthing like «e.g. Company_192.168.1.88 Company1_192.168.1.88» so that i know from witch company is mikrotik if its default IP. Thank you for you quick answer i just dont have any knowledge about scripting 🙁

    1. Жаконда / Автор записи

      Now it`s better to understanding what you want to do))
      Try make changes in code, thats must be good. Sorry check it i cant.

      After line:
      # Получаем имя оборудования
      RESULT=$(ssh $username»@»$i «system identity print» | awk ‘ {print $2} ‘);

      Add code:
      MIKROTIK_NAME=$RESULT

      Then, after that line:
      # Создаем каталог для бекапа оборудования
      echo «Создаем директорию для размещения бекапа…»

      Replace that line:
      mkdir -p $tmp/$i/$date/

      By that:
      mkdir -p $tmp/$MIKROTIK_NAME»_»$i/$date/

      Replace thats lines:
      sftp $username»@»$i»:backup.backup» $tmp/$i/$date/$i»-«$time».backup»;
      sftp $username»@»$i»:backup.rsc» $tmp/$i/$date/$i»-«$time».rsc»;

      By that lines:
      sftp $username»@»$i»:backup.backup» $tmp/$MIKROTIK_NAME»_»$i/$date/$MIKROTIK_NAME»_»$i»-«$time».backup»;
      sftp $username»@»$i»:backup.rsc» $tmp/$MIKROTIK_NAME»_»$i/$date/$MIKROTIK_NAME»_»$i»-«$time».rsc»;

      Replace:
      cd $tmp/$i/

      By:
      cd $tmp/$MIKROTIK_NAME»_»$i/

      Replace that:
      RESULT=$(cat /home/admin/sudos | sudo -S -u root mkdir -p /mnt/samba/Mikrotik/$MIKROTIK_NAME»_»$i)

      By that:
      RESULT=$(cat /home/admin/sudos | sudo -S -u root mkdir -p /mnt/samba/Mikrotik/$MIKROTIK_NAME»_»$i)

      Replace:
      RESULT=$(cat /home/admin/sudos | sudo -S -u root mv $tmp/$MIKROTIK_NAME»_»$i/$date».tar.gz» «/mnt/samba/Mikrotik/$MIKROTIK_NAME»_»$i/$date.tar.gz»)

      By:
      RESULT=$(cat /home/admin/sudos | sudo -S -u root mv $tmp/$MIKROTIK_NAME»_»$i/$date».tar.gz» «/mnt/samba/Mikrotik/$MIKROTIK_NAME»_»$i/$date.tar.gz»)

      Replace:
      RESULT=$(cat /home/admin/sudos | sudo -S -u root mv $log «/mnt/samba/MIkrotik/$MIKROTIK_NAME»_»$i/$date.log.txt»)

      By:
      RESULT=$(cat /home/admin/sudos | sudo -S -u root mv $log «/mnt/samba/MIkrotik/$MIKROTIK_NAME»_»$i/$date.log.txt»)

  4. Marko /

    Hi, me again. I get same result when i was trying to do something on my own 🙁 in new line that you tell me «MIKROTIK_NAME=$RESULT» i got result like MIKROTIK_NAME=$’Company\r’ and whole directory is in mess i found on internet that have something with msdos coding and that windows leave that \r on the end of name when linux try to make folders but like i said early i dont have any skill in scripting so i dont know what to do 🙁 Thank you very much for helping me!

    1. Жаконда / Автор записи

      I`ll try it to help, as far as possible.

      1. Marko /

        Hi, me again. Here is some output to see more about problem.

        root@MikroTik-BKP:/home/admin/Mikrotik# ./test.sh
        ++ date +%d-%m-%Y
        + date=26-10-2018
        ++ date +%H-%M
        + time=11-12
        + username=backup
        + mikrotik=/home/admin/Mikrotik/adress_mikrotik
        + tmp=/home/admin/Mikrotik
        + log=/home/admin/Mikrotik/log.txt
        + smb_path_backup=//192.168.1.3/TikBak
        + domain=STORAGE.LOCAL
        + usrname=tik
        + passwd=1234
        ++ cat /home/admin/Mikrotik/adress_mikrotik
        + for i in ‘$( cat $mikrotik)’
        + mkdir -p /home/admin/Mikrotik/
        ++ awk ‘{print $2}’
        ++ ssh backup@192.168.1.88 ‘system identity print’
        + RESULT=$’Company\r’
        + echo ‘Start of backup equipment Mikrotik’
        Start of backup equipment Mikrotik
        ‘ echo ‘Starting Mikrotik hardware backup Mikrotik (11-12) Company
        + MIKROTIK_NAME=$’Company\r’
        + echo ‘Creating hardware backup 192.168.1.88…’
        Creating hardware backup 192.168.1.88…
        + ssh backup@192.168.1.88 ‘system backup save name=backup’
        Configuration backup saved
        + ‘[‘ 0 -eq 0 ‘]’
        +++ tput cols
        ++ tput hpa 237
        ++ tput cub 6
        + echo -n ‘ [OK]’
        [OK]+ echo ‘Creating backup 192.168.1.88 successfully (11-12)’
        + echo

        + echo ‘Creating a backup of the text file configuration hardware 192.168.1.88…’
        Creating a backup of the text file configuration hardware 192.168.1.88…
        + ssh backup@192.168.1.88 ‘export file=backup.rsc’
        + ‘[‘ 0 -eq 0 ‘]’
        +++ tput cols
        ++ tput hpa 237
        ++ tput cub 6
        + echo -n ‘ [OK]’
        [OK]+ echo ‘Creating a backup of the configuration text file 192.168.1.88 successfully (11-12)’
        + echo

        + echo ‘Create a directory to place backup…’
        Create a directory to place backup…
        + mkdir -p $’/home/admin/Mikrotik/Company\r_192.168.1.88/26-10-2018/’
        + echo ‘A temporary directory was created to place a backup with equipment 192.168.1.88 (11-12)’
        + echo ‘Downloading the received backup files from the hardware 192.168.1.88…’
        Downloading the received backup files from the hardware 192.168.1.88…
        + sftp backup@192.168.1.88:backup.backup $’/home/admin/Mikrotik/Company\r_192.168.1.88/26-10-2018/Company\r_192.168.1.88-11-12.backup’
        Connected to 192.168.1.88
        Fetching /backup.backup to /home/admin/Mikrotik/Company
        /backup.backup 100% 191KB 191.3KB/s 00:00
        + sftp backup@192.168.1.88:backup.rsc $’/home/admin/Mikrotik/Company\r_192.168.1.88/26-10-2018/Company\r_192.168.1.88-11-12.rsc’
        Connected to 192.168.1.88.
        Fetching /backup.rsc to /home/admin/Mikrotik/Company
        /backup.rsc 100% 40KB 39.8KB/s 00:00
        + ‘[‘ 0 -eq 0 ‘]’
        +++ tput cols
        ++ tput hpa 237
        ———————————————————————————————————
        I tried in this line
        RESULT=$(ssh $username»@»$i «system identity print» | awk ‘{print $2}’);

        in awk to remove \r and $ whit some command i forgot witch one 🙂 i tried alot and i got clear name in MIKROTIK_NAME=$RESULT but later in this line and alot more lines where is MIKROTIK_NAME

        sftp $username»@»$i»:backup.backup» $tmp/$MIKROTIK_NAME»_»$i/$date/$MIKROTIK_NAME»_»$i»-«$time».backup»;

        i got lot more \r\r than orginal awk command at the and of $MIKROTIK_NAME

        i tried also dos2unix command to file and sed -i ‘s/\r//g’ filename and other similar stuff still no luck 🙁

Оставить ответ

четыре × 3 =

© IT-блог Жаконды All Rights Reserved.
Яндекс.Метрика