bash 스크립트에서 mailx를 사용하여 이메일을 보내고 결과가 필요한지 기다립니다.

bash 스크립트에서 mailx를 사용하여 이메일을 보내고 결과가 필요한지 기다립니다.

로컬 사용자 루트에 첨부 파일이 포함된 이메일을 보내는 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

관련 정보