以编程方式从系统中提取接口配置?

以编程方式从系统中提取接口配置?

我想生成 [Linux] 系统上所有可用接口的列表,并为每个接口生成可用 IP 地址的列表。我希望以比解析命令输出更优雅的方式完成此操作,ip同时仍避免和朋友的麻烦ioctl()

不幸的是,虽然/sys/class/net/INTERFACE包含链路级寻址信息(例如接口 MAC 地址),但它不包含任何 IP 寻址信息。 中的任何文件也不/proc包含此信息。

在我开始让我的 Python 代码看起来更像 C 之前,有没有更好的工具可以做到这一点? 类似的东西ip产生结构化输出会很好。

答案1

Puppet Labs(Puppet 的制造商)还制作了一款名为因素

Facter 是一款轻量级程序,可收集有关硬件和操作系统的基本节点信息。Facter 尤其适用于检索操作系统名称、硬件特性、IP 地址、MAC 地址和 SSH 密钥等信息。

它不需要安装或使用 Puppet,只需要一个 Ruby 解释器。

正是出于这种原因,我发现 Facter 在我的日常系统管理任务中非常有用。例如,要在盒子上显示 IP 地址:

$ facter interfaces
eth0,eth0_0,eth1,eth2,eth3,sit0
$ facter | grep ipaddress
ipaddress => 10.2.5.100
ipaddress_eth0 => 10.2.5.100
ipaddress_eth0_0 => 10.2.6.1
$ facter ipaddress_eth0
10.2.5.100

Facter 可以提供许多其他信息,并且可以轻松编写自己的自定义事实来扩展它。

相关内容