User Tools

Site Tools


bash_скрипт_для_резервного_копирования_mikrotik

Bash скрипт для резервного копирования Mikrotik

На удаленном хосте создаем пару ключей, для дальнейшей беспарольной авторизации на Mikrotik.
На mikrotik регистрируем пользователя, в данном примере –UserName
С Mikrotik забираем публичный ключ. Для этого используем /tool fetch который поддерживает SFTP (SSH File Transfer Protocol)

/tool fetch url="sftp://10.10.10.14/home/User/.ssh/id_rsa.pub" user=UserName password=P@$$w0rd dst-path=id_rsa.pub

Далее импортируем ключ

user ssh-keys import user=UserName public-key-file=id_rsa.pub

Посмотрим на импортированные ключи:

user ssh-keys print

Создаем директорию для резервного копирования /home/UserName/backup

Делаем два вида бекапа: бинарный и текстовый (.rsc)

#!/bin/bash
 
routers=( "192.168.30.14" "192.168.13.13" "22.39.92.4" "192.168.1.1" )
backupdir="/home/UserName/backup"
privatekey="/home/UserName/.ssh/id_rsa"
login="UserName"
faillog="/home/UserName/log/fhost.log"
cdate=$(date +%Y.%m.%d)
fulldir="${backupdir}/`date +%Y`/`date +%m`/`date +%d`"
 
for r in ${routers[@]}; do
    result=$(ping -c 2 -W  1 -q  $r | grep transmitted)
    pattern="0 received";
    if [[ $result =~ $pattern ]]; then
        echo "$r is down in $cdate" >> $faillog
    else
        cmd_backup="/system backup save name=${r}.backup"
        echo "BackUp RouterOS" >&2  # Tracing
        ssh ${login}@$r -i $privatekey "${cmd_backup}" > /dev/null
        echo "ExportFile" >&2  # Tracing
        cmd_backup="/export file=${r}"
        ssh ${login}@$r -i $privatekey "${cmd_backup}" > /dev/null
        sleep 5
        echo "Create Directory" >&2  # Tracing
        mkdir -p $fulldir
        echo "Copy BackUp File" >&2  # Tracing
        scp -i $privatekey ${login}@${r}:/${r}.backup ${fulldir}
        scp -i $privatekey ${login}@${r}:/${r}.rsc ${fulldir}
        ssh ${login}@$r -i $privatekey "/file remove \"${r}.backup\""
        ssh ${login}@$r -i $privatekey "/file remove \"${r}.rsc\""
    fi
    continue
done
 
sleep 10
 
find ~/backup/* -mtime +60 -exec rm -rf '{}' +
bash_скрипт_для_резервного_копирования_mikrotik.txt · Last modified: 2023/04/06 10:28 (external edit)