로컬 사용자 루트에 첨부 파일이 포함된 이메일을 보내는 bash 스크립트를 작성 중입니다.
mailx
명령줄 인수가 유효하지 않은 경우에도 일부 도우미가 분기되어 종료 상태 0으로 즉시 종료되는 것을 확인했습니다 .
localhost:~/basinsrv # mailx -s aaa root -a bbb </dev/null ; echo $?; 0
localhost:~/basinsrv # sendmail: invalid option -- 'a'
sendmail: invalid option -- 'a'
sendmail: fatal: usage: sendmail [options]
mailx
결과를 기다리고 올바른 오류 코드로 종료하려면 어떻게 해야 합니까 ?
사실 생성된 이메일을 보내기 전에 후처리를 해야 해요.
실제로 메시지를 보내지 않고 메시지를 파일에 저장하는 것이 가능합니까?
mailx-12.5-31.7.x86_64
접미사-3.6.2-7.1.x86_64
답변1
오류 문제를 해결하는 가장 깔끔한 해결책은 먼저 매개변수가 올바른지 확인하는 것입니다. 예제를 수정하려면 명령줄 끝에 수신자를 입력하세요.
mailx -s 'subject here' -a 'X-Sent-Using: myscript.sh' root </dev/null
sendmail
그러나 그럼에도 불구하고 그것은 쓰여진 방식이 아니기 때문에 기다리지 않을 것입니다 (귀하의 경우 Postfix).
이메일의 사후 처리는 그렇게 할 수 없습니다. 당신이 해야 할 일은 와 직접 통신하는 것뿐입니다 sendmail
.
[email protected] # My email address
to=root # Recipient address
(
echo "From: $from"
echo "To: $to"
echo "Subject: it's a fine day"
echo "X-Sent-Using: ${0##*/}"
echo
cat "$message_body_file" # Let's hope this file exists
) | sendmail "$to" # May need /usr/sbin/sendmail