partisan42
@partisan42
Новичок в Linux.

В чём может быть ошибка в скрипте?

Доброго дня.
Есть задача автоматизировать бэкапы микротика. В сети нашёл скрипт который должен помочь мне с этой задачей.
#/bin/bash
routers=( 192.168.0.1 )
backupdir="/root/mikrotik/"
privatekey="/root/.ssh/id_dsa"
login="admin"
DATE="`date '+%Y-%m-%d'`"
for r in ${routers[@]}; do
cmd_backup="/system backup save name=${r}.backup"
ssh ${login}@$r -i $privatekey "${cmd_backup}" > /dev/null
sleep 2
cmd_backup="/export file=${r}"
ssh ${login}@$r -i $privatekey "${cmd_backup}" > /dev/null
sleep 5
scp -i $privatekey ${login}@${r}:${r}.backup ${backupdir}$r-$DATE.backup
scp -i $privatekey ${login}@${r}:${r}.rsc ${backupdir}$r-$DATE.rsc
ssh ${login}@$r -i $privatekey "/file remove \"${r}.backup\""
ssh ${login}@$r -i $privatekey "/file remove \"${r}.rsc\""
done
find $backupdir* -mtime +3 -exec rm {} \;


Но при попытке выполнить его я получаю ошибку.
[root@DataB ~]# ./backup_mikrotik
'/backup_mikrotik: line 7: syntax error near unexpected token `do
'/backup_mikrotik: line 7: `for r in ${routers[@]}; do

Подскажите пожалуйста, в чём может быть проблема? Или хотя бы укажите, в каком направлении смотреть?
Заранее, большое спасибо.
Увы, задачу надо решить срочно, потому погружаться в изучение bash просто физически нет времени:(
  • Вопрос задан
  • 208 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
У вас в ошибке в строке for 1 in ${routers[@]}; do
После for стоит единица, а должна стоять r. Сравните с оригинальным скриптом, который вы привели.
Ну и по тексту скрипта внутри for используется переменная цикла ${r}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы