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