通过返回码检测 dig 的区域传输是否成功

通过返回码检测 dig 的区域传输是否成功

我有这样的脚本

CHARSET=ASCII dig domain.com AXFR > domain.com.zone

if [ "$?" = "0" ]; then
    echo "OK"
else
    echo "Something went wrong"
    
fi

但是,我看到文件不完整,末尾有一行

;; communications error: end of file

我的脚本中是否存在错误或者我如何才能“捕获”这个错误?

答案1

dig 命令的退出状态($?)并不反映区域传输是否成功。

我们可以检查输出文件中的错误消息,如下所示:

CHARSET=ASCII dig domain.com AXFR > domain.com.zone

if grep -q "communications error: end of file" domain.com.zone; then
    echo "Something went wrong"
else
    echo "OK"
    gzip -9 domain.com.zone
fi

相关内容