Comment obtenir votre adresse IP publique dans un script Linux Bash

Publié: 2022-11-12
Ordinateur portable sur fond bleu affichant une invite de commande Linux.
fatmawati achmad zaenuri/Shutterstock.com
Vous pouvez obtenir votre adresse IP externe à partir d'un site Web avec la commande curl telle que "curl -s ifconfig.me". Cependant, les sites Web peuvent changer. Pour une réponse plus fiable, utilisez plutôt la commande dig comme "dig @resolver1.opendns.com myip.opendns.com +short" pour obtenir votre adresse IP à partir d'un serveur DNS.

Vous aurez besoin de votre adresse IP externe si vous souhaitez vous connecter à distance à votre ordinateur. Le trouver manuellement est facile, mais voici comment le trouver à partir d'un script Linux.

Adresses IP internes et externes

Les adresses de protocole Internet sont utilisées pour identifier les appareils sur un réseau. Il s'agit d'une étiquette unique sur le réseau, attribuée à un seul appareil. Si un autre appareil souhaite envoyer des données à cet appareil, il peut le faire en utilisant son adresse IP.

Comment fonctionnent les adresses IP ?
CONNEXION Comment fonctionnent les adresses IP ?

Votre modem haut débit intègre un routeur réseau qui dirige le trafic réseau sur le réseau d'un appareil à l'autre. C'est également l'autorité locale qui attribue les adresses IP aux appareils lorsqu'ils rejoignent le réseau. Il maintient également une table des noms de réseau et des adresses IP. Cela vous permet de donner des noms significatifs aux ordinateurs de votre réseau car, pour les humains, les noms sont plus faciles à utiliser que les listes de numéros.

Les appareils sur Internet ont également une adresse IP. Certains d'entre eux ont aussi des noms, comme les sites Web. Les fournisseurs de services de noms de domaine recherchent les noms de domaine des sites Web et les remplacent automatiquement par des adresses IP.

Votre modem haut débit reçoit sa propre adresse IP externe ou accessible sur Internet par votre fournisseur d'accès Internet (FAI). Quel que soit le nombre d'appareils que vous pourriez avoir chez vous et qui sont connectés à Internet, leur trafic combiné passe entièrement par cette adresse IP unique.

Si vous êtes hors de la ville et que vous souhaitez vous connecter à un service exécuté sur l'un des ordinateurs de votre domicile, vous devrez utiliser votre adresse IP externe pour le faire. Votre routeur devra bien sûr être configuré pour acheminer votre demande de connexion vers l'appareil approprié à l'intérieur de votre maison.

À moins que vous ne payiez un petit supplément à votre FAI chaque mois pour une adresse IP statique , votre adresse IP externe peut changer de temps à autre. Le redémarrage de votre modem haut débit peut entraîner l'obtention d'une adresse IP externe différente. Donc, si vous avez besoin de connaître votre adresse IP externe, vous ne pouvez pas simplement la vérifier une fois et la stocker. Vous devrez déterminer périodiquement de quoi il s'agit.

Recherche de votre adresse IP externe

Découvrir votre adresse IP externe signifie parler à quelque chose qui se trouve en dehors de votre réseau. En d'autres termes, accéder à quelque chose sur Internet qui peut nous donner les informations que nous voulons. Nous devons scruter le vide et voir ce qui nous regarde. Et puis demandez-lui notre adresse externe.

Il y a deux façons de procéder. Une façon implique des sites Web. Il existe de nombreux sites Web qui vous montreront quelle est votre adresse IP externe, ainsi qu'un tas d'autres informations. Vous pouvez y accéder dans votre navigateur ou utiliser un outil de ligne de commande comme curl qui peut faire des requêtes HTTPS.

L'autre méthode consiste à utiliser une commande dédiée telle que dig . La commande dig interroge les serveurs DNS pour récupérer des informations.

Utilisation d'un navigateur

Bien sûr, l'utilisation d'un navigateur n'est pas un moyen convivial pour obtenir votre adresse IP externe. Mais regarder un site Web qui offre ce service peut nous donner des informations utiles. Nous avions l'habitude de recommander ip4.me mais le site n'a pas été mis à jour en HTTPS. Il utilise toujours l'ancien HTTP non sécurisé. Le site fonctionne toujours, mais il existe maintenant de meilleures alternatives.

Le site ifconfig.me fournit un bon ensemble d'informations.

Le site ifconfig.me affichant une adresse IP externe

Ceci signale notre IP externe comme 178.238.11.140. En faisant défiler la page Web, vous trouverez une liste de commandes que vous pouvez utiliser pour récupérer des informations sur le site.

Le site ifconfig.me affichant un ensemble de commandes cURL

Les exemples qu'ils donnent utilisent tous curl pour interroger le site. Voyons donc comment utiliser curl .

Utilisation de boucle

Sur nos machines de test, Fedora 37 avait déjà installé curl . Nous devions l'installer sur nos ordinateurs Ubuntu et Manjaro.

Pour l'installer sur Ubuntu tapez :

 sudo apt installer curl 

Installer curl sur Ubuntu

La commande sur Manjaro est :

 sudo pacman -S boucle 

Installer curl sur Manjaro

Nous pouvons essayer cela avec la première commande répertoriée sur la page Web ifconfig.me .

 boucle ifconfig.me 

Récupération d'une adresse IP externe à l'aide de l'action par défaut du site Web ifconfig.me

Notre adresse IP externe est récupérée et affichée dans la fenêtre du terminal. La sortie est dépouillée. Il n'y a même pas de caractère de saut de ligne imprimé après la chaîne. L'invite de commande est collée à l'adresse IP.

Comment utiliser curl pour télécharger des fichiers à partir de la ligne de commande Linux
CONNEXION Comment utiliser curl pour télécharger des fichiers à partir de la ligne de commande Linux

Cette commande fonctionne car le retour de l'adresse IP est l'action par défaut du site Web. Si l'action par défaut change, nous pourrions obtenir un résultat différent. Pour répondre à cela, nous pouvons spécifier que nous demandons notre adresse IP en ajoutant l'identifiant "ip" à l'URL.

 curl ifconfig.me/ip 

Récupération d'une adresse IP externe à l'aide du site Web ifconfig.me avec le spécificateur d'adresse IP

Cela renvoie l'adresse IP comme avant.

Cela illustre le problème de l'utilisation d'un site Web comme source de votre adresse IP. Les sites Web peuvent fermer ou modifier leur mode de fonctionnement ou le format des informations renvoyées. Ces changements feront que les scripts qui dépendent de ces sites échoueront ou se comporteront de manière imprévisible.

L'utilisation d'une ressource réputée et fiable comme un serveur DNS est un moyen plus robuste d'obtenir votre adresse IP externe. Pour interroger un serveur DNS, nous devons utiliser la commande dig.

CONNEXION : Qu'est-ce que le DNS et dois-je utiliser un autre serveur DNS ?

Utilisation de la commande dig

Cette fois, dig a été installé sur Fedora et Ubuntu, et nous n'avons eu qu'à l'installer sur Manjaro.

La commande est la commande pacman habituelle, donc pas de surprises, mais le nom du package n'est pas ce à quoi vous pourriez vous attendre.

 sudo pacman -S outils de liaison 

Installation de fouilles sur Manjaro

Pour utiliser dig pour découvrir notre adresse IP externe, nous devons la faire pointer vers un serveur DNS. Nous utilisons le serveur OpenDNS, qui est fourni par Cisco.

Nous devons spécifier le nom du serveur DNS que nous voulons utiliser, précédé d'un signe "@". Nous devons également nommer le type d'enregistrement que nous souhaitons récupérer. Dans ce cas, il s'agit de "myip". L'option +short garantit que nous obtenons une réponse concise et non détaillée.

 creuser @ resolver1.opendns.com myip.opendns.com + court 

Récupérer une adresse IP externe à partir d'un serveur DNS avec la commande dig

Cette fois, notre adresse IP est suivie d'un caractère de saut de ligne. Comme nous le verrons, ceci est imprimé après la chaîne d'adresse IP, ce n'est pas une partie intégrante de la chaîne elle-même.

CONNEXION: Comment utiliser la commande dig sous Linux

Utilisation de ceux-ci dans un script

Il existe de nombreuses raisons pour lesquelles vous pourriez vouloir connaître votre adresse IP externe à partir d'un script. Peut-être avez-vous un script qui surveille si votre adresse IP externe a changé et vous avertit lorsque cela se produit. Ou peut-être qu'un serveur avertit ses clients lorsque son adresse change. Quelles que soient vos raisons, nous pouvons implémenter assez facilement les commandes que nous avons utilisées sur la ligne de commande dans un script.

Pour récupérer notre adresse IP externe et l'assigner à une variable, il suffit d'envelopper la commande dans une substitution de commande, $(...) , et de l'assigner à une variable, comme ceci :

 variables=$(...)

La commande entre parenthèses est exécutée et la valeur de retour est remplacée par l'expression. Dans cet exemple, la commande est simplifiée en "variable=valeur de retour".

CONNEXION: Comment travailler avec des variables dans Bash

Le voici dans un script. Nous avons ajouté l'option -s (silencieuse) à la commande curl pour l'empêcher de signaler la progression de la récupération des données.

 #!/bin/bash

extaddr=$(curl -s ifconfig.me)

echo "L'adresse IP externe est $extaddr (depuis cURL)"

Copiez ce script dans un éditeur, enregistrez-le sous "getex1.sh" et rendez-le exécutable avec la commande chmod .

 chmod +x getex1.sh 

Rendre un script exécutable avec chmod

Exécutons le script et voyons ce que nous obtenons.

 ./getex1.sh 

Exécution du script getex1.sh

Pour faire de même avec l'option plus robuste d'utiliser un serveur DNS plutôt qu'un site Web, il suffit de remplacer la commande curl par celle de dig .

 #!/bin/bash

extaddr=$(dig @resolver1.opendns.com myip.opendns.com +short)

echo "L'adresse IP externe est $extaddr (de dig)"

Enregistrez-le en tant que script "getex2.sh" et rendez-le exécutable avec chmod .

 chmod +x getex2.sh 

Rendre un script exécutable avec chmod

Exécutons ce script.

 ./getex2.sh 

Exécution du script getex2.sh

Nous pouvons voir à partir de la sortie des deux scripts que malgré la commande dig imprimant un caractère de saut de ligne sur la ligne de commande, dans le script il n'y a pas de saut de ligne ajouté à la variable extaddr .

Optez pour la fiabilité

Il est toujours plus sûr d'utiliser un service reconnu qui est réputé et dont le format de sortie est prévisible que d'utiliser un site Web « non officiel ». Comme tout le reste sur Internet, regardez bien de qui vous obtenez vos informations.

CONNEXION: Comment laisser les scripts Linux détecter qu'ils s'exécutent sur des machines virtuelles