首页 > 解决方案 > 用于检查 DNS 是否具有与同一列表中旁边的 IP 相同的 IP 的 Linux 脚本

问题描述

我有以下格式的 DNS 和 IP 地址列表:

域名系统 IP

域名系统 IP

域名系统 IP

我需要做一个脚本来dig +short DNS检查它是否与它旁边的 IP 相同,并且与所有文档都有相同的 IP。这个想法是,如果它相同,它会返回一条消息,$DNS and $IP match如果它们相同,或者如果它们不相同,则返回一条错误消息。

我试过了awk '{ DDD=$(dig +short $1); if ( $DDD == $2 ); then; print "'$DDD' and '$2' match."; fi }' all.log

但结果是:

(空格)和(空格)匹配。

(空格)和(空格)匹配。

(空格)和(空格)匹配。

标签: linuxbashshellawk

解决方案


这是一个仅使用 bash 的简单答案:

while read DNS IP; do
  DDD=$(dig +short "$DNS")
  if [ "$DDD" = "$IP" ]; then
    echo "'$DDD' and '$IP' match."
  else
    echo "'$DDD' and '$IP' do not match."
  fi
done < all.log

请注意,dig +short NAME命令可能会返回多行结果,在这种情况下,脚本将无法工作......


推荐阅读