为什么主机和nslookup认为IP地址是主机名?

用户1676844

为什么该命令失败(这是实际命令的简化版本)?

/tmp $ echo 74.6.231.20 | xargs -n1 -I {} echo "$(host -d {})"
Trying "74.6.231.20.<REDACTED>.<REDACTED>.com"
Trying "74.6.231.20"
Host 74.6.231.20 not found: 3(NXDOMAIN)
Received 95 bytes from 10.163.24.1#53 in 1 ms

主机命令处理74.6.231.20作为主机名代替这就是为什么它的失败的IP地址(即不存在74.6.231.20主机名/ FQDN)。

直接指定IP地址的方法是:

/tmp $ echo 216.58.195.78 |  xargs -n1 -I {} echo "$(host -d 216.58.195.78)"
Trying "78.195.58.216.in-addr.arpa"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21425
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;78.195.58.216.in-addr.arpa.    IN  PTR

;; ANSWER SECTION:
78.195.58.216.in-addr.arpa. 85730 IN    PTR sfo07s16-in-f78.1e100.net.
78.195.58.216.in-addr.arpa. 85730 IN    PTR sfo07s16-in-f14.1e100.net.

Received 113 bytes from 10.163.24.1#53 in 2 ms

消除echo命令也可以:

/tmp echo 74.6.231.20 | xargs -n1 -I {} sh -c  "(host {})"
20.231.6.74.in-addr.arpa domain name pointer media-router-fp73.prod.media.vip.ne1.yahoo.com.

问题似乎是xargs与echo以及xargs如何进行{}字符串替换的结合。

ps我知道有解决方法,我主要是想寻找中断的交互,从而阻止此命令成功运行。谢谢。

詹姆斯·斯诺格(James Sneeringer)

发生这种情况是因为您的shell在将命令行参数传递给命令之前对命令行参数执行了变量和命令替换,因此$(host -d {})发生在之前xargs第二个echo命令实际上输出以下内容:

Trying "{}.<REDACTED>.<REDACTED>.com"
Trying "{}"
Host {} not found: 3(NXDOMAIN)
Received 95 bytes from 10.163.24.1#53 in 1 ms

然后xargs{}输出替换为IP地址,从而使该host命令看起来像是有故障的。您可以通过set -x在运行管道之前使用自己查看它

( set -x; echo 74.6.231.20 | xargs -n1 -I {} echo "$(host -d {})" )

+ echo 74.6.231.20
++ host -d '{}'
+ xargs -n1 -I '{}' echo 'Trying "{}.<REDACTED>.<REDACTED>.com"
Trying "{}"
Host {} not found: 3(NXDOMAIN)
Received 95 bytes from 10.163.24.1#53 in 1 ms'
Trying "74.6.231.20.<REDACTED>.<REDACTED>.com"
Trying "74.6.231.20"
Host 74.6.231.20 not found: 3(NXDOMAIN)
Received 95 bytes from 10.163.24.1#53 in 1 ms

在此特定示例中,如果您要做的只是显示的输出host,则不必先捕获它,然后显式地echo对其进行输出。只需执行以下操作就足够了:

echo 74.6.231.20 | xargs -n1 host -d

编辑:

这是一个如何将xargs输入传递给多个命令的示例之所以bash可行,是因为它将在-c命令之后将任何参数分配为位置参数(以开头)$0

echo 74.6.231.20 | xargs -n1 -I '{}' /bin/bash -c 'echo "$0"; host -d "$0"' '{}'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

可以ping IP地址和nslookup主机名,但不能在Windows中临时ping主机名

来自分类Dev

为什么Solaris 10上的host和nslookup解析主机名,而ping和telnet却不能解析主机名?

来自分类Dev

为什么通过主机名执行ping操作比通过IP地址花费更多时间?

来自分类Dev

为什么可以通过IP地址而不是主机名ping?

来自分类Dev

了解为什么主机名-i返回奇怪的IP地址

来自分类Dev

主机名与IP-地址

来自分类Dev

主机名与 IP 地址不同

来自分类Dev

Busybox ping IP可以工作,但是主机名nslookup失败,并显示“地址错误”

来自分类Dev

为什么主机名和ping报告的网络地址之间存在差异?

来自分类Dev

Sequelize 不从 .env 文件中获取主机名并默认为机器的 IP 地址

来自分类Dev

从IP地址/ MAC地址获取主机名

来自分类Dev

Ansible获取库存主机组的主机名和IP

来自分类Dev

兄弟脚本从IP地址查找主机名

来自分类Dev

主机名未解析为本地IP地址

来自分类Dev

使用带有Flask的主机名,而不是IP地址

来自分类Dev

使用JAVA从网络上的IP地址获取主机名

来自分类Dev

通过主机名访问本地IP地址

来自分类Dev

阅读主机名列表并解析为IP地址

来自分类Dev

将IP地址绑定到主机名

来自分类Dev

无法仅ping主机名IP地址

来自分类Dev

Android:需要帮助来从主机名获取IP地址

来自分类Dev

如何查找从外部看到的主机名/ IP地址?

来自分类Dev

使用带有Flask的主机名,而不是IP地址

来自分类Dev

VBS代码从主机名解析IP地址?

来自分类Dev

Hadoop:根据进程ID查找主机名或IP地址

来自分类Dev

从Android中的URL提取主机名/ IP地址

来自分类Dev

如何独立于IP地址更改主机名?

来自分类Dev

如何将主机名指向 IP 地址

来自分类Dev

传出防火墙配置的主机名或 IP 地址

Related 相关文章

  1. 1

    可以ping IP地址和nslookup主机名,但不能在Windows中临时ping主机名

  2. 2

    为什么Solaris 10上的host和nslookup解析主机名,而ping和telnet却不能解析主机名?

  3. 3

    为什么通过主机名执行ping操作比通过IP地址花费更多时间?

  4. 4

    为什么可以通过IP地址而不是主机名ping?

  5. 5

    了解为什么主机名-i返回奇怪的IP地址

  6. 6

    主机名与IP-地址

  7. 7

    主机名与 IP 地址不同

  8. 8

    Busybox ping IP可以工作,但是主机名nslookup失败,并显示“地址错误”

  9. 9

    为什么主机名和ping报告的网络地址之间存在差异?

  10. 10

    Sequelize 不从 .env 文件中获取主机名并默认为机器的 IP 地址

  11. 11

    从IP地址/ MAC地址获取主机名

  12. 12

    Ansible获取库存主机组的主机名和IP

  13. 13

    兄弟脚本从IP地址查找主机名

  14. 14

    主机名未解析为本地IP地址

  15. 15

    使用带有Flask的主机名,而不是IP地址

  16. 16

    使用JAVA从网络上的IP地址获取主机名

  17. 17

    通过主机名访问本地IP地址

  18. 18

    阅读主机名列表并解析为IP地址

  19. 19

    将IP地址绑定到主机名

  20. 20

    无法仅ping主机名IP地址

  21. 21

    Android:需要帮助来从主机名获取IP地址

  22. 22

    如何查找从外部看到的主机名/ IP地址?

  23. 23

    使用带有Flask的主机名,而不是IP地址

  24. 24

    VBS代码从主机名解析IP地址?

  25. 25

    Hadoop:根据进程ID查找主机名或IP地址

  26. 26

    从Android中的URL提取主机名/ IP地址

  27. 27

    如何独立于IP地址更改主机名?

  28. 28

    如何将主机名指向 IP 地址

  29. 29

    传出防火墙配置的主机名或 IP 地址

热门标签

归档