Comment puis-je trouver les adresses IP de chaque interface, en Perl?
Je suis en train d'essayer de trouver une liste d'adresses IP sur une machine linux. Actuellement mon installation est une machine CentOS avec un peu de sous interfaces eth0 pour chaque VLAN. Je suis en train d'écrire un script pour voir si chaque VLAN adresse IP dispose d'une connectivité à certaines adresses IP (une adresse IP différente pour chaque réseau).
Par exemple:
- eth0 a une IP 10.0.0.2 netmask 255.255.255.128
- eth0.2 a une IP 10.0.130 netmask 255.255.255.128
- eth0.3 a une IP 10.0.1.2 netmask 255.255.255.128
Chaque interface est actuellement fixé à adresse IP statique via des fichiers de configuration. Cependant, je suis désireux de changer de statique, DHCP et obtenir la même adresse IP. Si je fais cela, il va se casser cette partie du script:
@devarray = `cat /etc/sysconfig/network-scripts/ifcfg-eth0* | grep IPADDR=10 -B 10 | grep -v "#" | grep IPADDR`;
Est-il un meilleur moyen de déterminer quelles adresses IP sont disponibles. Tout ce que je besoin de rassembler est juste l'adresse IP et pas le nom de l'appareil.
OriginalL'auteur jinanwow | 2010-11-04
Vous devez vous connecter pour publier un commentaire.
Si vous voulez un pur Perl solution, vous pouvez essayer de IO::Interface. J'ai eu un certain succès avec elle dans le passé, et la documentation est bonne.
N'ayez pas peur de CPAN! Il est là, afin de l'utiliser si vous en avez besoin! Si vraiment vous ne pouvez pas installer de paquets, de faire un appel système pour la commande ifconfig et en utilisant les regex pour analyser les Adresses IP est sans doute la façon dont je le ferais.
OriginalL'auteur Weegee
Il est Net::Interface, qui semble me donner de bons résultats sur mon système:
Ce sera le retour de quelque chose comme
Mise à jour: Doit l'ai mentionné: consultez la documentation pour les autres méthodes de
address
pour obtenir d'autres renseignements par l'interface.OriginalL'auteur phaylon
Comment sur l'utilisation de la commande ifconfig?
OriginalL'auteur Mike Axiak
Je pense que la méthode suivante est la plus fiable et de l'environnement. Mais n'est utile que si vous connaissez le nom de l'interface.
trouve ici: http://snipplr.com/view/46170/the-most-reliable-and-correct-method-to-get-network-interface-address-in-linux-using-perl/
OriginalL'auteur Lux In Tenebris