【问题标题】:Extract IPs from multiples websites using bash and awk使用 bash 和 awk 从多个网站提取 IP
【发布时间】:2018-06-30 18:43:19
【问题描述】:

我正在寻找获取多个网站 IP 并将它们输出为 "domain.com:","1.1.1.1" 的最佳方法,以实现这一点我正在考虑使用 nslookup(不确定是否是最佳选择,但我不想要使用 ping)

好吧,我正在尝试类似的东西:

for domain in $(cat domains.txt)
do
   nslookup $domain 8.8.8.8 | awk '/Address: ([[:digit:]]+\.){3}/{gsub(/\.$/,"",$1); printf "\"%s\",\"%s\"\n",$1,$NF}'; done

有了这个,我得到了这个输出:

"Address:","64.233.190.101"
"Address:","64.233.190.138"
"Address:","64.233.190.100"
"Address:","64.233.190.139"
"Address:","64.233.190.113"
"Address:","64.233.190.102"
"Address:","98.137.246.8"
"Address:","98.138.219.231"
"Address:","72.30.35.9"
"Address:","72.30.35.10"
"Address:","98.138.219.232"
"Address:","98.137.246.7"
"Address:","93.184.216.34"

预期输出

"google.com","64.233.190.101"
"google.com","64.233.190.138"
"google.com","64.233.190.100"
"google.com","64.233.190.139"
"google.com","64.233.190.113"
"google.com","64.233.190.102"
"yahoo.com","98.137.246.8"
"yahoo.com","98.138.219.231"
"yahoo.com","72.30.35.9"
"yahoo.com","72.30.35.10"
"yahoo.com","98.138.219.232"
"yahoo.com","98.137.246.7"
"example.com","93.184.216.34"

domains.txt 内容:

google.com
yahoo.com
example.com

我试图这样做,但我无法在输出的"domain.com", 下获得正确的域。

我不确定是使用 $domain 还是 awk,任何人都可以帮助我获得正确的语法。请注意,我需要在 "domain.com", 中请求域,而不是 nslookup 中的 Name:

谢谢。

【问题讨论】:

    标签: bash awk ip nslookup


    【解决方案1】:
    domain="mail.yahoo.com"
    nslookup "$domain" 8.8.8.8 | awk -v n="$domain" -F ' +' '$1=="Address:"{print "\""n"\",\""$2"\""}'
    

    输出:

    "mail.yahoo.com","87.248.116.12" "mail.yahoo.com","87.248.116.11"

    【讨论】:

    • 感谢@Cyrus,它确实有效,但我需要获取请求的域。例如,如果我查找 mail.yahoo.com,我会得到“fd-geoycpi-uno.gycpi.b.yahoodns.net”,“200.152.162.137”,我需要输出“mail.yahoo.com”,“200.152”。 162.137"
    • 酷,谢谢。我喜欢你使用 awk 的方式。
    • @EdMorton:我已经更新了我的答案以修复错误并使用 Ubuntu 16.04 对其进行了测试。
    猜你喜欢
    • 2012-08-13
    • 2018-08-15
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 2011-12-08
    相关资源
    最近更新 更多