내 Bash 스크립트에는 다음 항목이 있습니다.
echo "Please see attached file" | mailx -S smtp=$smtpServer -s "Subject of the mail" -a $logfile -r "[email protected]" [email protected] [email protected]
메일을 보낼 때 오류가 없으면 제대로 작동하지만 오류가 있으면 mailx는 오류 메시지를 표시하고 사용자가 Enter를 누를 때까지 기다립니다. 이것을 어떻게 피할 수 있습니까? 사용자가 Enter 키를 누를 때까지 기다리면 안 됩니다.
답변1
일반적으로 비대화형 모드에 대해 응용 프로그램 스위치를 사용하거나 이에 대한 오류를 억제하려고 합니다. mailx
그러나 문서를 잠깐 살펴본 후에도 명확한 내용을 찾지 못했습니다.
이를 수행하는 보다 일반적인 방법은 timeout
지정된 명령을 실행하고 지정된 시간 초과 후에도 계속 실행 중인 경우 이를 종료하는 명령을 사용하여 수행하는 것입니다.
예를 들어, 귀하의 경우 명령은 다음과 같습니다.
echo "Mail body" | timeout 15s mailx ${MAILX_OPTIONS}
15초 후에도 명령이 계속 실행되면 명령이 종료됩니다 mailx
. 이는 지속적인 오류 메시지가 있는 경우에만 발생합니다.
답변2
심각한 해킹 범주의 솔루션에서는 필요한 경우 표시되고 그렇지 않은 경우 삭제되는 불필요한 캐리지 리턴을 보냅니다.
{ echo "Please see attached file"; echo; } | mailx ...
답변3
당신은 할 수 있습니다예상되는쉘에서는 프롬프트를 찾고 응답 메시지를 보낼 수 있도록 모니터링합니다.
#!/usr/bin/expect
spawn COMMAND
expect "PROMPT"
send "RESPONSE\n";
interact