linux - 在没有 ping 的情况下从命令行测试主机名是否存在

标签 linux bash ip host

我们有一个脚本需要对有限的主机列表执行操作。但是每次我们在/etc/hosts 文件中添加或删除主机时,我们最终都必须更新此脚本。

基本上,假设我的主机文件如下所示:

192.168.100.1     hostip_1
192.168.100.2     hostip_2
192.168.100.10    hostip_3
192.168.100.20    hostip_5

我的脚本 (bash) 做了类似的事情:

callmyfunction hostip_1
callmyfunction hostip_2
callmyfunction hostip_3
callmyfunction hostip_5

如果我想将 hostip_4 添加到主机列表中,我现在必须进入并编辑我的脚本并将其添加到列表中。虽然这是一个小的修改,但它仍然是过程中可能会被遗忘的一个步骤(尤其是当系统的新手加入时)。

有没有一种方法可以测试“hostip_1”是否是系统中的有效主机名(无需 ping 主机或 grepping/etc/hosts 文件)?我们可能使用多个主机文件,不同的配置可能有不同的文件名,所以我不能依赖于尝试 grep 单个文件。我需要系统为我完成这项工作。

有什么线索吗?

最佳答案

首先,我关于主机文件中没有的东西的说法是错误的。那正是他们所在的地方。对我来说很愚蠢。

但答案是:

getent hosts

这将使它打印出所有内容,我可以从那里进行查找。

关于linux - 在没有 ping 的情况下从命令行测试主机名是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14505708/

相关文章:

刷新输出上的 linux watch 横幅

c - 使用一个进程向多个其他进程发送信号 "simultaneously"

python - 如何 Python 从包含分号的配置文件中打印一行?

具有真实IP地址的python Socket服务器

http - 从 http.Request 获取客户端 IP 地址的正确方法

PowerShell:将 IP 地址转换为子网

linux - 上传文件到hadoop

c++ - 需要在 linux 中编写一个守护进程,不确定使用 C++ 还是 C

macos - 获取文件夹(或子文件/文件夹)的最后修改日期和时间

linux - 所有父目录的 `ls -l`