- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个 bash 脚本,它将从域名中找到它的 MX 记录,从中找出哪个是主要的(它们并不总是按顺序排列),然后找到它的 IP。(当有多个主 MX 时,第一个找到的就可以了)
例如:
./findmxip.sh gmail.com
会给我 173.194.71.26
。为此,我需要托管 gmail.com然后在结果中找到主 MX 并托管它,获取其 IP。
最佳答案
要准确获得 0 或 1 个答案:
dig +short gmail.com mx | sort -n | nawk '{print $2; exit}' | dig +short -f -
您需要一个支持+short
的非古代dig
。
如前所述,“主要”MX 可能不止一个,因为首选项不必是唯一的。如果您想要所有最低偏好记录的所有 IP 地址,则:
dig +short oracle.com mx | sort -n |
nawk -v pref=65536 '($1<=pref) {pref=$1; print $2}' |
dig +short -f - | uniq
这不处理没有 MX 记录且 A 记录接受电子邮件的情况,这是一种不常见但完全有效的配置。
遗憾的是,无论域是否存在 (NXDOMAIN),以及是否存在任何 MX 记录,我测试过的所有 dig
版本都返回 0。不过,您可以捕获 DNS 超时 (rc=9)。相关的 host
命令确实返回一个带有 NXDOMAIN 的非零 rc,但它的行为有点不一致,脚本很乱,输出更难解析。
一个穷人的错误检查版本(受 tripleee 的评论启发)根据您的 host
命令可能稍微更健壮:
DOMAIN=gmail.com
if ! host -t any $DOMAIN >/dev/null 2>&1 ; then
echo "no such domain"
elif ! host -t mx $DOMAIN >/dev/null 2>&1; then
echo "no MX records"
else
dig +short $DOMAIN mx | sort -n | nawk '{print $2; exit}' | dig +short -f -
fi
(相反地,对于 -t mx,您可能需要 旧 版本的
测试工作,较新的版本只是返回 0。)host
(bind-8.x
)
这正是人们开始
紧张地后退
问你为什么不用perl
/python
/$的时候MFTL
.
如果您真的需要用 bash 编写一个健壮的版本,请查看 djbdns CLI 工具和 debugging tools这更容易解析(尽管遗憾的是也不要设置用户退出代码)。
关于bash - 如何从 Bash 中的域获取主 MX IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15208095/
我是一名优秀的程序员,十分优秀!