bash - DNS解析器脚本
问题描述
如何使 bash 脚本过滤 DNS 解析器列表,因为它会出现误报结果
建议的代码
!/bin/sh
for IP in `cat ./resolvers.txt`; do
printf "%-4s", $IP
dig @$IP test.com
done
test.com 是我的域,我已经知道输出是什么,那么任何不同的结果都将来自错误的解析器。
解决方案
#!/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_domain
correct_ip
good-resolvers.txt
看:
- BashFAQ #1 - 在 bash 中逐行读取输入文件的最佳实践
[[ ]]
bash-hackers' wiki 上的条件表达式aka 。
推荐阅读
- spring - Spring Boot Applcation (Security + oauth2) get HttpServerErrorException: 503 Service Unavailable
- php - [Route: form.comments.destroy] [URI: form/{form}/comments/{comment}] 缺少必需的参数(Laravel 5.6)
- ios - WKWebview 自定义方案重定向的问题
- java - 仅在满足特定条件时应用减少
- python - 如何调用包含作为参数的 cython cdef() 函数作为 python 中的函数?
- java - 设计电话簿,为您提供从池中返回的号码
- c++ - 为 STL 分配器实现 select_on_container_copy_construction()
- powerbi - 测量以检索 PowerBI 中的最后一个值
- android - 更改 TextInputEditText 的下划线颜色在 ScrollView 中不起作用
- c++ - clang 不会警告标题中的“已定义但未使用”,gcc 会