(modifié le 14 avril 2017 à 2:20)

Si vous élaborez un script vous aurez peut-être besoin de lire votre adresse IP publique, celle qui est exposée à internet.

Je vous propose plusieurs solutions pour le faire sous Windows et GNU/Linux (et donc théoriquement sur mac).

En powershell

(Invoke-WebRequest icanhazip.com).Content

Ce qui équivaut à l'alias curl :

(curl icanhazip.com).Content

Avec Rest (json) :

(Invoke-RestMethod -Uri 'https://api.ipify.org?format=json').ip

Shell / Bash

Voici une liste de commandes qui mènent au même résultat :

curl -s http://myexternalip.com/raw

Fonctionne aussi avec ces sites là (les 2 premiers sont très fiables) :

  • http://checkip.amazonaws.com
  • http://whatismyip.akamai.com/
  • https://4.ifcfg.me/
  • http://curlmyip.com
  • http://ipecho.net/plain
  • http://icanhazip.com/
  • http://wgetip.com
  • http://bot.whatismyipaddress.com/

nc 4.ifcfg.me 23 | grep IPv4 | cut -d' ' -f4

nc icanhazip.com 80 <<< $'GET / HTTP/1.1\nHost: icanhazip.com\n\n' | tail -n1

nc ipv4.test-ipv6.com 79 | awk '{print $7}'

telnet 4.ifcfg.me 2>&1 | grep IPv4 | cut -d' ' -f4

dig +short myip.opendns.com @resolver1.opendns.com | tail -1

Vous pouvez par exemple définir un alias avec l'une des commandes pour avoir l'ip rapidement en terminal.

Conclusion

Il existe plein de façons de récupérer cette IP externe. Ce n'est pas tellement elle qui nous intéresse mais la façon de procéder, histoire de s'en inspirer pour d'autres bidouilles 🙂

Personnellement j'aime bien la méthode DNS, elle est plus rapide qu'un wget ou cURL et plus fun.

Faites un tour sur ifcfg.me (telnet, ftp, finger...) et ipify.org pour trouver d'autres méthodes alternatives dans d'autres langages mais aussi en IPv4 ou IPv6. httpbin.org peut aussi vous intéresser.

sources : 1, 2, 3

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter