我有数千个域名列表。例如:
.google.com
.gmail.com
.google.co
.yahoo.com
等等,等等。
我需要解析这些域的IP地址,然后获取范围whois。示例手册:
host -t a gmail.com = 216.58.192.69
whois 216.58.192.69 | grep CIDR = 216.58.192.0/19
但我无法使用列表。我在括号中加了一个标记错误
#!/bin/bash
cat domains.txt | host -t a (error) | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" > list.txt
cat list.txt | whois (error) | grep CIDR | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n > final.txt
非常感谢
更新......我想我明白了,但它并不是一个非常优雅的剧本。肯定有更好的办法。另外。首先,您必须从列表中删除:点,评论,www等(使用sed)
dig +short -f domains.txt | egrep -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n | uniq > ips
cat ips | while read ips; do whois $ips | grep CIDR; done | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\/[0-9]\{1,\}' > cidr.txt
sort -o cidr.txt -u cidr.txt -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n cidr.txt
重要:脚本需要检查IP / CIDR列表,以避免(或删除)冲突:示例:
54.200.0.0/14是54.192.0.0/12的子网
其他请求:有时" whois"没有响应CIDR及其显示消息:
%查询类型包括:POC,ownerid,CIDR块,IP
如果没有CIDR,我怎样才能将ip咨询,传递给最终的acl?
谢谢