Extraire l’adresse IP d’un serveur

En Perl

#!/usr/bin/perl -w
use strict ;

my $intrf="eth0" ;
open (FD, "LANG=C /sbin/ip -f inet addr show dev $intrf|") or die("ip : $!") ;
my @lines = <FD> ;
close(FD) ;
my ($line) = grep (/inet/, @lines) ;
my @ip = split(/[ \t]+/, $line) ;
# Avec la regexp ci dessus il y a forcément une première variable vide
# puisqu'il y a des blancs en début de ligne. Donc l'@IP est la
# troisième variable($ip[2]), pas la deuxième.
print "$ip[2]\n" ;

exit 0;

En bash

#!/bin/bash

intrf="eth0"
set $(LANG=C /sbin/ip -f inet addr show dev $intrf | grep "inet")
echo $2
exit 0

On peut remplacer echo $2 par xmessage -center -buttons "Quitter:0" -default "Quitter" $2 pour afficher une popup.

Notes

La commande ’ip’ n’existe pas dans tous les environnements (AIX par exemple) Dans ce cas il faut se rabatre sur ifconfig.