什么是仅确定一个接口的ip的规范/便携方法

我正在编写一些安装脚本/文档,我想dynamic地设置一个服务的侦听IP,因为我知道一个特定的networking接口将在一个特定的networking。 我的networking上有一些服务,我希望这样configuration,所以我希望这将简化我的工作(微小)。

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

如果你想移植,那么你几乎必须去parsingifconfig的输出。 例如facter和ip不是Solaris本地的,也可能是其他类似Uinix的操作系统。 ifconfig的输出也是跨平台的。 你真的将不得不写一个脚本来检测操作系统,并做正确的事情。 我在这里为各种操作系统收集了一些内衬。

从我看到的,从各种操作系统获得这些信息的最简单的方法是使用facter 。

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

另请参阅: 内置木偶事实的参考 。

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

此外,如果您在这些系统上有DNS服务,则可以使用“主机名”命令parsing输出。

甚至可以在/ etc / hosts中添加额外的logging(如果你已经有了基于文件的解决scheme),比如“selfAddress”,并将IP地址放在那里 – 在每个系统上设置一个东西。 然后在你的开始/文档/等解决这个静态名称,并在每个系统上,你会得到的IP。

我可以想到一个典型的解决scheme,它应该是厂商中立的,可以在许多平台上工作,包括Linux,* nix,Windows,路由器固件和许多其他系统。

启用S​​NMP,然后通过SNMP获取接口/ IP列表。 这是一个相对复杂的方式来获取信息,因此从ifconfig,ip,ipconfig和其他工具的IP报废。

相关部分走路包括