我想列出一个[Linux]系统上可用的所有接口,并为每个接口生成一个可用IP地址列表。 我希望能够比parsingip命令的输出更加优雅,同时避免ioctl()和朋友的麻烦。
不幸的是,虽然/sys/class/net/INTERFACE包含链接级别的寻址信息(如接口MAC地址),但它不包含任何ip地址信息。 /proc任何文件也不包含这些信息。
在我离开之前,让我的Python代码更像C,有更好的工具吗? 像ip这样的产生结构化输出将是很好的。
木偶实验室(Puppet Labs公司)也制作了一个名为Facter的工具:
Facter是一个轻量级程序,收集有关硬件和操作系统的基本节点信息。 Facter对于检索操作系统名称,硬件特性,IP地址,MAC地址和SSH密钥等特别有用。
它不需要安装或使用Puppet,只需要一个Ruby解释器。
我发现Facter在我日常的系统pipe理任务中非常有用,正是出于这种原因。 例如,要在一个盒子上显示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可以提供许多其他信息,并且可以很容易地编写自己的自定义事实来扩展它。