我在 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 键。我怎样才能避免这种情况呢?它不应该等待用户按下回车键。
答案1
您通常会尝试使用应用程序开关进行非交互模式或为此抑制错误。mailx
然而,在快速浏览文档后,我没有找到任何明确的内容。
执行此操作的更通用方法是使用命令timeout
来执行此操作,该命令运行指定的命令,如果在指定的超时后该命令仍在运行,则将其终止。
例如,在您的情况下,命令将是:
echo "Mail body" | timeout 15s mailx ${MAILX_OPTIONS}
如果该命令在 15 秒后仍在运行,则该命令将被终止mailx
,这应该仅在出现挥之不去的错误消息的情况下发生。
答案2
在严重黑客攻击类别的解决方案中,发送一个无偿的回车符,如果需要的话就会出现,如果不需要的话就会被丢弃:
{ echo "Please see attached file"; echo; } | mailx ...
答案3
您可以在预计shell,它将监视允许您查找提示并发送响应信息。
#!/usr/bin/expect
spawn COMMAND
expect "PROMPT"
send "RESPONSE\n";
interact