首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nslookup:只返回IP地址

nslookup:只返回IP地址
EN

Unix & Linux用户
提问于 2019-04-20 12:37:03
回答 1查看 8K关注 0票数 3

我的研究表明,nslookup从未真正用于脚本使用:使用dig代替,使用+short选项根据查询参数生成机器可读的输出。

代码语言:javascript
复制
dig +short myip.opendns.com @resolver1.opendns.com

尽管如此,我的路由器不支持dig,也不支持nslookup。我试图将返回的IP地址保存为一个变量,以便与实际IP地址进行比较:

ip=$(curl -沉默http://api.ipify.org/)

awk在Ubuntu上取得了成功:

代码语言:javascript
复制
nslookup yahoo.com  | awk -F': ' 'NR==6 { print $2 } '

但是返回了DD-WRT路由器上的一个错误:

代码语言:javascript
复制
nslookup: can't resolve '(null)'
2001:4998:58:1836::10 media-router-fp1.prod1.media.vip.bf1.yahoo.com

最终目标

我有CLI .sh命令来更新DDNS服务:每当测量和存储的DDNS地址不同时,我想执行update命令(CRON作业每5分钟检查一次)。

问题

什么是最简单的nslookup,相当于上面提到的dig示例?

观测、反馈和测试区域

第二个论点补充说:

代码语言:javascript
复制
root@DD-WRT:/opt# nslookup mydomain.asuscomm.com  resolver1.opendns.com
Server:    208.67.222.222
Address 1: 208.67.222.222 resolver1.opendns.com

Name:      mydomain.asuscomm.com
Address 1: 7W.10X.7Y.6Z c-7W-10X-7Y-6Z.hsd1.fl.comcast.net

devnull:> /dev/null

代码语言:javascript
复制
root@DD-WRT:/opt# nslookup mydomain.asuscomm.com  > /dev/null
nslookup: can't resolve '(null)'

devnull:> /dev/null 2>&1

代码语言:javascript
复制
root@DD-WRT:/opt# nslookup mydomain.asuscomm.com  > /dev/null 2>&1
root@DD-WRT:/opt# 

输入nslookup:

代码语言:javascript
复制
root@DD-WRT:~# type nslookup
nslookup is /usr/bin/nslookup

管道到grep,然后归档:

代码语言:javascript
复制
root@DD-WRT:/opt# nslookup myDomain.asuscomm.com | grep Address > test.txt
nslookup: can't resolve '(null)'
root@DD-WRT:/opt# cat test.txt
Address 1: 7W.10X.7Y.6Z c-7W-10X-7Y-6Z.hsd1.fl.comcast.net

nslookup

代码语言:javascript
复制
root@DD-WRT:/opt/test# nslookup myFQDN.asuscomm.com

Name:      mydomain.asuscomm.com
Address 1: 7x.10x.7.x6x c-7x-10x-7x-6x.hsd1.fl.comcast.net

查找雅虎

代码语言:javascript
复制
root@DD-WRT:/opt# nslookup yahoo.com

nslookup: can't resolve '(null)'

Name:      yahoo.com
Address 1: 2001:4998:c:1023::5 media-router-fp2.prod1.media.vip.gq1.yahoo.com
Address 2: 2001:4998:58:1836::10 media-router-fp1.prod1.media.vip.bf1.yahoo.com
Address 3: 2001:4998:58:1836::11 media-router-fp2.prod1.media.vip.bf1.yahoo.com
Address 4: 2001:4998:c:1023::4 media-router-fp1.prod1.media.vip.gq1.yahoo.com
Address 5: 2001:4998:44:41d::3 media-router-fp1.prod1.media.vip.ne1.yahoo.com
Address 6: 2001:4998:44:41d::4 media-router-fp2.prod1.media.vip.ne1.yahoo.com
Address 7: 72.30.35.9 media-router-fp1.prod1.media.vip.bf1.yahoo.com
Address 8: 98.137.246.7 media-router-fp1.prod1.media.vip.gq1.yahoo.com
Address 9: 98.138.219.231 media-router-fp1.prod1.media.vip.ne1.yahoo.com
Address 10: 98.138.219.232 media-router-fp2.prod1.media.vip.ne1.yahoo.com
Address 11: 72.30.35.10 media-router-fp2.prod1.media.vip.bf1.yahoo.com
Address 12: 98.137.246.8 media-router-fp2.prod1.media.vip.gq1.yahoo.com

grep:

代码语言:javascript
复制
root@DD-WRT:/# nslookup yahoo.com | grep gq1


nslookup: can't resolve '(null)'
Address 1: 2001:4998:c:1023::4 media-router-fp1.prod1.media.vip.gq1.yahoo.com
Address 6: 2001:4998:c:1023::5 media-router-fp2.prod1.media.vip.gq1.yahoo.com
Address 7: 98.137.246.8 media-router-fp2.prod1.media.vip.gq1.yahoo.com
Address 8: 98.137.246.7 media-router-fp1.prod1.media.vip.gq1.yahoo.com

grep:

代码语言:javascript
复制
root@DD-WRT:/opt# nslookup yahoo.com | grep -o -E '([0-9][0-9]?[0-9]?\.?){4}grep3:root@DD-WRT:/opt# nslookup mydomain.asuscomm.com | grep -o -E '([0-9][^:][0-9]?[0-9]?\.?){4}' > output.txt
nslookup: can't resolve '(null)'
root@DD-WRT:/opt# cat output.txt
7W.10X.7Y.6Z
W-10X-7Y-6Z.

nslookup: can't resolve '(null)'

grep3:

A25

EN

回答 1

Unix & Linux用户

发布于 2022-01-18 19:28:54

这样做是可行的:

代码语言:javascript
复制
nslookup "$D" 2>/dev/null  | grep "Address " | sed 's/.*: //g;s/ .*//g'

但请注意

  • 它可以返回多个地址,因此可以遍历它们。
  • 如果你不想要的话,可以退出ipv6
  • 许多域解决了每个查询都不同的问题(比如amazon随机使用cloudfront、fastly或其他ips )
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/513545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档