仅确定接口的 IP 的规范/可移植方法是什么

仅确定接口的 IP 的规范/可移植方法是什么

我正在编写一些设置脚本/文档,我想动态设置服务的监听 IP,因为我知道特定网络接口将位于特定网络上。我的网络上有很多服务我想以这种方式配置,所以我希望这能(稍微)简化我的工作。

我知道可以通过解析ifconfigip等咒语来做到这一点,但我想知道这是否是规范的解决方案。

答案1

如果您想要可移植,那么您几乎必须解析 ifconfig 的输出。facter例如ip,不是 Solaris 原生的,也可能不是其他 Uinixlike 操作系统的原生版本。ifconfig 的输出在不同平台上也不同。您确实必须编写一个脚本来检测操作系统并执行正确的操作。我收集了一些适用于各种操作系统的单行代码这里

答案2

据我所知,从各种操作系统中一致地获取此信息的最简单方法是使用因素

$ facter | grep ipaddress
ipaddress => 192.168.0.2 
ipaddress_eth0 => 192.168.0.2 
ipaddress_eth1 => 192.168.0.3

也可以看看:内置木偶事实参考

答案3

ifconfig 是我遇到的最常用的工具。如果您确定只想在 shell/ifconfig 级别上工作,只需编写一些 shell 代码来解析“ifconfig en0”的输出(您提到了解接口)。检查状态:活动,然后查看“inet”行以了解 IP 地址。

此外,如果您在这些系统上有 DNS 服务,您可以直接解析“hostname”命令的输出。

或者甚至四处走走,在 /etc/hosts 中添加一条额外记录(如果您有基于文件的解析),如“selfAddress”,并将盒子的 IP 放入其中——每个系统都需要设置一项。然后在您的 start/documentation/etc 中只需解析该静态名称,您就会在每个系统上获得 IP。

答案4

我能想到一个规范的解决方案,它应该是中立的,并且可以跨许多平台运行,包括 Linux、*nix、Windows、路由器固件和许多其他系统。

在所有设备上启用 SNMP,然后通过 SNMP 获取接口/ip 列表。这是一种相对复杂的获取信息的方法,因此从 ifconfig、ip、ipconfig 和其他工具中删除了 ip。

相关路段包括

相关内容