Вариантов в сети много, но очередной материал завалялся в багажнике, поэтому решил поделиться с миром.
Дано: маршрутизатор Mikrotik, который просит автоматического бэкапа без участия администратора и сервер, куда этот бэкап будет складироваться.
На Mikrotik разделе IP-Services включаем доступ по ssh (при необходимости укажите в поле Available from, из каких подсетей или IP-адресов будет разрешен доступ):

Теперь создаем пользователя mikrotik-backup и добавляем в группу Full. Рекомендуется сделать отдельную группу и дать минимальные права на чтение, запись и ssh. Но у меня не заработал такой вариант при копировании с микротика по scp, поэтому добавил в группу full.

На сервере создаем такого же юзверя mikrotik-backup и генирим под ним ключ: ssh-key-gen, без пароля, cat id_rsa.pub >> authorized_keys
Переносим ключ на микротик под имеющейся админской учеткой, двоеточие в конце обязательно:
scp id_rsa.pub admin@192.168.88.1:
На микроте выполняем:
user ssh-keys import public-key-file=id_rsa.pub user=mikrotik-backup
Проверяем, что с сервера по ssh можем ходить на микротик без пароля:
ssh 192.168.88.1
Сам скрипт:
#!/bin/bash
routers=( 192.168.88.10 192.168.88.1 10.10.5.2 10.10.6.2 )
backupdir="/backup/mikrotik"
privatekey="/home/mikrotik-backup/.ssh/id_rsa"
login="mikrotik-backup"
fulldir="${backupdir}/`date +%Y`/`date +%m`/`date +%d`"
for r in ${routers[@]}; do
cmd_backup="/system backup save name=${r}.backup"
ssh ${login}@$r -i $privatekey "${cmd_backup}" > /dev/null
cmd_backup="/export file=${r}"
ssh ${login}@$r -i $privatekey "${cmd_backup}" > /dev/null
sleep 5
mkdir -p $fulldir
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\""
done
Пояснение: в список добавляются айпи всех нужных роутеров, на которых импортированы ключи для безпарольного доступа, создаются дефолтные пути бэкапа. В цикле проходимся по всем роутерам, посылая по ssh команду бэкапа, а потом создаются папки по дате, куда по scp копируются файлы бэкапов из микротика, а потом удаляются на самом устройстве.
Делается два бэкапа: бинарный и текстовый.
UPD. В процессе эксплуатации скрипта, столкнулся однажды с его неработоспособностью, бэкапы перестали делаться: через ps aux видел висящую команду скрипта на этапе:
cmd_backup=”/export file=${r}”
ssh ${login}@$r -i $privatekey “${cmd_backup}” > /dev/null
Проблема была на самом микротике: зависает экспорт файла бэкапа. Если это сделать вручную, то аналогичная проблема налицо. Ребут роутера решил проблему.
Hello,
thank you for a script working almost perfectly
i wonder if you can somehow put in name of directory backup identity of MikroTik router? I have a lot locations and i can`t always remember them by IP. Also I don`t have any knowledge about scripting 
Thank you!
Hello, thanks for your comment. Unfortunately, I am not the author of this script, and in this article just my version of using this script for my purposes.
Группа Full и правда – лишнее.
Но чтения, записи и ssh недостаточно, у меня заработало только вот в таком виде:
policy=ssh,ftp,read,write,policy,test,sensitive остальные – не нужно