스크립트가 실패할 경우 로그 출력과 함께 이메일을 보내는 방법

스크립트가 실패할 경우 로그 출력과 함께 이메일을 보내는 방법

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

관련 정보