LFTP를 사용하여 원격 파일을 클라이언트의 로컬 폴더에 미러링하기 위해 다음 스크립트 템플릿을 작성했습니다. 미러가 실패하면 기록된 출력이 포함된 이메일을 보내길 원합니다(그러나 실제 로그 파일은 꽤 길 수 있으므로 전송하지 않음). 그대로 종료 상태 1만 표시됩니다. 출력을 보내는 가장 좋은 방법은 무엇입니까?
#! /bin/bash
# Client info
client=example
data=/home/clients/$client/data
log=/home/clients/$client/log
# Create directories
mkdir -p $data $log
# LFTP settings
protocol="sftp://"
host="ftp.example.com"
user="example"
pass='123abc'
remote=/Outbound
command="mirror --verbose --continue $remote $data"
# Output to log
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>>$log/$client.log 2>&1
# Begin import | Recursively mirror remote to data
timestamp="$(date +"%m-%d-%Y@%T")"
echo "*** Time is $timestamp ***"
echo "Starting $client import."
lftp -u $user,$pass $protocol$host <<EOF
set net:timeout 5
set net:max-retries 2
set net:reconnect-interval-base 5
$command
bye
EOF
#Store import exit status
import_exit_status=$?
# Send notification if feed import fails
if [ $import_exit_status -ne 0 ]; then
/usr/sbin/sendmail "[email protected]" <<EOF
subject:$client Import Failed
from:notifications@host
Import failed with following reason(s):
$import_exit_status
EOF
else
echo "Import complete."
echo ""
fi
exit 0