スクリプトが失敗した場合にログ出力で電子メールを送信する方法

スクリプトが失敗した場合にログ出力で電子メールを送信する方法

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

ベストアンサー1

おすすめ記事