我试图在linux盒子上找到一个IP地址列表 . 目前我的设置是CentOS机器,每个VLAN都有几个用于eth0的子接口 . 我正在编写一个脚本,以查看每个VLAN IP地址是否与某些IP地址(每个网络的不同IP地址)连接 .
例如:
-
eth0的IP为10.0.0.2 netmask 255.255.255.128
-
eth0.2的IP为10.0.130网络掩码255.255.255.128
-
eth0.3的IP为10.0.1.2 netmask 255.255.255.128
每个接口当前通过配置文件设置为静态IP地址 . 但是,我想将它从静态更改为DHCP并获得相同的IP地址 . 如果我这样做,它将破坏脚本的这一部分:
@devarray = `cat /etc/sysconfig/network-scripts/ifcfg-eth0* | grep IPADDR=10 -B 10 | grep -v "#" | grep IPADDR`;
有没有更好的方法来确定可用的IP地址 . 我需要收集的只是IP地址而不是设备名称 .
4 回答
如果你想要一个纯粹的Perl解决方案,你可以试试IO::Interface . 我以前在这方面取得了一些成功,而且文档很好 .
有Net::Interface,这似乎在我的系统上给了我很好的结果:
这将返回类似的东西
更新:应该提到:检查文档中的
address
以外的方法以获取每个接口的其他信息 .使用ifconfig怎么样?
我认为以下方法是最可靠且与环境无关的 . 但只有在知道接口名称时才有用 .
在这里找到:http://snipplr.com/view/46170/the-most-reliable-and-correct-method-to-get-network-interface-address-in-linux-using-perl/