2012-11-14 4 views
3

일부 백업 작업을 수행하는 bash 스크립트를 작성했습니다. errexit과 pipefail을 사용하여 스크립트를 실행하므로 오류가 발생하지 않습니다. 지금 내가 원하는 것은 오류가 발생할 경우를 대비해 이메일을 보내는 스크립트입니다. 나는이 일을 얻었다. 하지만 스크립트 오류가 이메일 본문에 포함되기를 바랍니다. 어떻게해야합니까?bash는 이메일로 오류를 보내겠습니다.

#!/bin/bash 
# exit script if an error occures 
set -o errexit 
# even exit if an error in passed through a pipe 
set -o pipefail 

trap 'ERRORMESSAGE_HERE | mailx -s "Something went wrong on srv-002" [email protected]' ERR 

# the backup job here 

# if script reaches this point everything went perfectly good 
echo "all good!" 

도와 주셔서 감사합니다 많은 : 여기

는 스크립트입니다!

+0

http://stackoverflow.com/questions/6784295/capturing-and-mailing-bash-script-errors -이 관련 질문을 것 같다하는을 그것이 당신에게 어울리는 경우에 응답을보십시오. – Yuriy

답변

3

(테스트되지 않은)에 대한 방법 :

{ 
    # do the work here 
} 2> >(mailx -s "job errors" [email protected]) 
+0

이렇게하면됩니다. 또는 스크립트를 실행할 때 ('cron '으로 스케쥴링하는 경우)''2>> (mailx -s "job errors"[email protected])'을 추가하거나 이것을 수행하는 간단한 래퍼를 작성하십시오 (실행하면 수동으로). –

+0

나는 그것을 잘 확인한다. 내 테스트 :'ls notExistingDir 2>> (mailx -s "job errors"[email protected])' – Genjo