Скрипт оболочки, который создает журнал, если файл не отправлен на удаленный сервер

Скрипт оболочки, который создает журнал, если файл не отправлен на удаленный сервер

У меня есть небольшой скрипт, который по сути выполняет 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или даже больше, но в руководстве говорится, что это для целей отладки.

Связанный контент