Shell - Récupérer son IP publique

Décembre 2016


Finalité


Pour plusieurs raisons, on peut avoir besoin de récupérer son adresse IP publique dans un script.
Le problème qui se pose alors si l'on est sur un LAN, est de trouver cette IP sans interventions humaine.

Mise en œuvre


Le moyen le plus simple que j'ai trouvé jusqu'à présent est une simple commande recherchant une ip dans une page web choisie :
GET www.monip.org | sed -nre 's/^.* (([0-9]{1,3}\.){3}[0-9]{1,3}).*$/\1/p'
ou
lynx --source www.monip.org | sed -nre 's/^.* (([0-9]{1,3}\.){3}[0-9]{1,3}).*$/\1/p'
ou encore
w3m -dump http://www.monip.org/ | awk -F': ' '/IP/ { print $2 }'

Merci à dubcek pour la solution avec "w3m" (voir ce thread)

Explications


GET


La commande GET (lwp-request) se trouvre dans la libwww de Perl (package perl-libwww-perl-version).
Comme son nom l'indique elle fait un GET sur une page, cela renvoie le code source de la page.

Lynx


Lynx est un navigateur en mode texte présent dans la plupart des distributions Linux, plus simple à installer que lwp-request (Perl) si besoin.

Sed


La commande sed :
  • les paramètres
    • -n : restreint l'affichage aux lignes invoquées (lié au paramètre "p")
    • -r : support des expressions régulières étendues
    • -e : expression
    • s///: indique une substitution
    • p : le résultat est affiché (en corrélation avec le paramètre "n")
    • le motif
    • ^.*(motif_ip).*$ : recherche d'une ligne contenant une adresse IP (cf : Récupérer une adresse IP )
    • \1 : ce qui se trouve entre parenthèses peut être adressé dans la suite de l'expression par \1.


La ligne contenant l'adresse IP est donc remplacée par l'adresse IP elle même ;)

A vous de trouver quoi faire du résultat !

A voir également :

Ce document intitulé «  Shell - Récupérer son IP publique  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.