首页 > 解决方案 > DNS解析器脚本

问题描述

如何使 bash 脚本过滤 DNS 解析器列表,因为它会出现误报结果

建议的代码

!/bin/sh
for IP in `cat ./resolvers.txt`; do
    printf "%-4s", $IP
    dig @$IP test.com
done

test.com 是我的域,我已经知道输出是什么,那么任何不同的结果都将来自错误的解析器。

标签: bash

解决方案


#!/usr/bin/env bash
case $BASH_VERSION in '') echo "ERROR: Use bash, not sh" >&2; exit 1;; esac

test_domain="test.com"
correct_ip=1.2.3.4

while IFS= read -r ip; do
  if [[ $(dig +short "@$ip" "$test_domain" 2>/dev/null) = "$correct_ip" ]]; then
    printf '%s\n' "$ip"
  fi
done <all-resolvers.txt >good-resolvers.txt

...将读取并写入仅列出正确运行(解析为)all-resolvers.txt的 DNS 服务器的列表。test_domaincorrect_ipgood-resolvers.txt


看:


推荐阅读