У меня есть небольшой скрипт, который по сути выполняет rsync-синхронизацию файлов с удаленным сервером. Для аутентификации был сгенерирован ключ SSH.
только это присутствует в сценарии
rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved
В основном я хочу создать метод ведения журнала для этого скрипта, чтобы ничего не вычурного или чего-то в этом роде... только это... если соединение потеряно и файл не отправлен, в моем журнале появляется сообщение «Файл не отправлен, соединение не установлено».
также если файлы были отправлены, то в журналах отображается сообщение об успешной отправке.
или если хост или пользователь ошибаются, это отображается в моем журнале.
Спасибо и с уважением, Сагар Мандал
решение1
Если вы хотите регистрировать только неудачные попытки, вы можете получить возвращаемое значение rsync, посмотрев в $?
, которое является возвращаемым значением последнего скрипта. rsync
возвращает 0 в случае успеха и ненулевое значение при различных ошибках (https://lxadm.com/Rsync_exit_codes). Я бы сделал это таким образом:
#!/bin/bash
ret_text=$({rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved} 2>&1)
if [ $? -ne 0 ]; then
echo rsync error code $? on $(date)
echo rsync output follows
echo $ret_text
fi
Вы можете поместить это в файл script
и при запуске перенаправить его вывод в файл журнала, например, так script >> log_file
, или вы можете просто вызвать скрипт и добавить >> log_file
после каждой команды echo в скрипте.
Если вы хотите регистрировать также и успешные попытки, то вам нужно сделать следующее:
rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved &>> log_file
или
rsync --log-file=log_file /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved
Я бы также предложил увеличить объем информации, которую выдает rsync, добавив -v
или -vv
. Также можно использовать -vvv
или даже больше, но в руководстве говорится, что это для целей отладки.