2013-11-19 2 views
0

У меня есть сценарий, который в определенное время создает резервные копии файлов с одного HD на другой с использованием малины Pi.«On Error» отправить электронное письмо и выйти

Мне нужно начать выполнение 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 
+2

Вы можете отправлять сообщения электронной почты с почтовым клиентом. Не зная, какие из них установлены на вашем Rasberry Pi и не зная, какую операционную систему он использует, ничего более, чем довольно смутный совет невозможен. – Vorsprung

+0

Если вы откажетесь от требования сообщить номер строки, просто запуск скрипта из Cron будет делать почти именно то, о чем вы просите. – tripleee

ответ

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" [email protected] 
exit $errcode # or use some other value or do return instead 
} 
trap f ERR 
Смежные вопросы