Comment obtenir votre adresse IP publique dans un script Linux Bash
Publié: 2022-11-12Vous 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.
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.
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.
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
La commande sur Manjaro est :
sudo pacman -S boucle
Nous pouvons essayer cela avec la première commande répertoriée sur la page Web ifconfig.me
.
boucle 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.
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
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
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
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
Exécutons le script et voyons ce que nous obtenons.
./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
Exécutons ce 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