当前位置:  开发笔记 > 编程语言 > 正文

如何在Perl中找到每个接口的IP地址?

如何解决《如何在Perl中找到每个接口的IP地址?》经验,为你挑选了2个好方法。

我试图在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地址而不是设备名称.



1> phaylon..:

有Net :: Interface,它似乎在我的系统上给我很好的结果:

my %addresses = map { 
      ($_ => [
          map { Net::Interface::inet_ntoa($_) } # make addresses readable
              $_->address,                      # all addresses
      ]);
} Net::Interface->interfaces;                   # all interfaces

这将返回类似的东西

(
  eth0 => [],
  eth1 => [ '192.168.2.100' ],
  lo   => [ '127.0.0.1' ]
)

更新:应该提到:检查文档中的方法,address以获取每个接口的其他信息.



2> Weegee..:

如果您需要纯Perl解决方案,可以尝试IO :: Interface.我以前在这方面取得了一些成功,而且文档很好.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有