我目前正在研究一个解决方案,每当我的邮件服务器无法将文件传输到我的 ftp 服务器时,它就会通知我。(现在我的日志每晚轮换一次并立即上传到单独的 ftp 服务器)
当前配置如下:
HOST="..."
USER="..."
PASS="..."
DIR="/var/log/maillogs/"
LATEST="$(ls -t $DIR | head -n 2 | tail-n 1)"
FILE=$(basename $LATEST)
error=$(ftp -n $HOST <<EOF
quote USER $USER
quote PASS $PASS
prompt
lcd /var/log/maillogs/
cd /home/MailLog
put $FILE
quit
EOF
)
if [ $(echo $error | grep "failed")=="failed" ]
then
*Sending Mail via sendmail*
fi
由于某种原因,if 条件总是返回 true,因此无论文件是否能够传输,我都会收到一封邮件。
有谁知道,当无法传输日志时,我将如何更改 if 语句以实际上只获取邮件?
我也已经尝试过 的方法
if [ $? -ne 0 ]
,但我不太确定如何测试它是否确实有效。我尝试提供错误的 IP 或错误的用户登录,但这样做后,我只收到不同的错误。