“出错时”发送电子邮件并退出

时间:2013-11-19 14:52:15

标签: bash email raspberry-pi

我有一个脚本,在某个时间使用Raspberry Pi将文件从一个HD备份到另一个HD。

我需要开始执行rsyncs,如果有任何错误,请在电子邮件中发送行号,然后关闭pi。

但是,我不知道在现有脚本中添加这样一个函数的方式和位置。电子邮件已设置为向我的域发送邮件。

    #!/bin/bash

begin=$(date --date="19:00" +%s)
end=$(date --date="21:00" +%s)
now=$(date +%s)

if [ "$begin" -le "$now" -a "$now" -le "$end" ]; then


    echo "/sbin/shutdown -h 15" | sudo at 20:40

else

begin=$(date --date="3:00" +%s)
end=$(date --date="6:00" +%s)
now=$(date +%s)

    if [ "$begin" -le "$now" -a "$now" -le "$end" ]; then

/usr/bin/rsync -avx --delete /media/HDD1/shares/myprofile /media/HDD2/shares/
/usr/bin/rsync -avx --delete /media/HDD1/shares/hanprofile /media/HDD2/shares/

else

echo "don't do rsyncs"

    fi

fi

1 个答案:

答案 0 :(得分:0)

在脚本的顶部添加:

f () {
errcode=$? # save the exit code as the first thing done in the trap function

v1="Error "
v2=$errcode
v3=" the command executing at the time of the error was " 
v4=$BASH_COMMAND
v5=" on line "
v6=${BASH_LINENO[0]}
v7="$v1 $v2 $v3 $v4 $v5 $v6"

echo "$v7" | mail -s "Error" makem@myhome.co.uk
exit $errcode  # or use some other value or do return instead
}
trap f ERR