fdroid
@fdroid
press any key

Как написать скрипт для rsync?

Есть задача rsync-ать один webdav-каталог в другой - с serv1 на serv2. Сразу скажу, что с программированием знаком только на уровне спектрумовского бэйсика, но простые скрипты, думаю, осилю. Примерно, представляю реализацию так:
10 Запуск скрипта
20 Монтирование webdav каталога сервера 1 в /mnt/serv1 #это локальный webdav-каталог, поэтому точно доступен
30 Пингуем serv2 #это удалённый сервер
40 Если serv2 отвечает на пинг, то монтируем webdav каталог сервера 2 в /mnt/serv2, иначе GO TO 100
50 rsync /mnt/serv1 /mnt/serv2
60 Отмонтирование /mnt/serv2
70 Отмонтирование /mnt/serv1
80 e-mailим админу, что задача выполнена
90 Завершение работы скрипта
100 e-mailим админу, что serv2 недоступен, задача не выполнена

Как организовать строки 30 и 40 - т.е., как задать условия выполнения по доступности serv2, а также сделать переход GO TO 100 если не пингуется? Понятно, что никаких нумерованных строк в скриптах не будет, это просто на бэйсике так было.
  • Вопрос задан
  • 280 просмотров
Решения вопроса 2
if ping -c2 yandex.ru  > /dev/null; then
  echo "есть контакт, яндекс доступен "
else
mail -s "hello" "example@yandex.ru" <<EOF
А сервер то недоступен, сообщение многострочное. йеоэф это конец и начало сообщения 
EOF
fi
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
Даже на спектрумовском бейсике было удобнее использовать call и return, а не goto.

зачем монтировать каталог1, если в случае проблем с пингом, вы все равно завершаете работу и демонтируете его? Сделайте сперва проверку, а потом уже решайте что делать.

на баше проверка может выглядеть так
ping -c 1 server.com
if [ $? -ne 0 ]; then
echo "Сервер недоступен"
mail -s "[error] server.com is not available "admin@server.com" <<< "server.com недоступен."
exit 1
fi
а тут уже монтируем, синхронизируем, демонтируем. goto не нужен.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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