Comment utiliser set et pipefail dans les scripts Bash sous Linux
Agence web » Actualités du digital » Comment obtenir votre adresse IP publique dans un script Linux Bash

Comment obtenir votre adresse IP publique dans un script Linux Bash

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.

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 le l’Internet possèdent é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 dispose de sa propre connexion Internet ou externe Adresse IP 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 un statique Adresse IP 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 façon est d’utiliser une commande dédiée comme dig. La dig La commande 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à curl installée. Nous devions l’installer sur nos ordinateurs Ubuntu et Manjaro.

Pour l’installer sur Ubuntu tapez :

sudo apt install curl

Installer curl sur Ubuntu

La commande sur Manjaro est :

sudo pacman -S curl

Installer curl sur Manjaro

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

curl 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.

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.

Utilisation de la commande dig

Ce temps, dig était installé sur Fedora et Ubuntu, et nous n’avions qu’à l’installer sur Manjaro.

La commande est habituelle pacman commande, donc pas de surprises là-bas, mais le nom du package n’est pas ce à quoi vous pourriez vous attendre.

sudo pacman -S bind-tools

Installation de fouilles sur Manjaro

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 ». La +short option garantit que nous obtenons une réponse concise, et non verbeuse.

dig @resolver1.opendns.com myip.opendns.com +short

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.

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’affecter à une variable, il suffit d’envelopper la commande dans une substitution de commande, $(...) et affectez-le à une variable, comme ceci :

variable=$(...)

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 ».

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

#!/bin/bash

extaddr=$(curl -s ifconfig.me)

echo "The external IP address is $extaddr (from cURL)"

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

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 la même chose avec l’option plus robuste d’utiliser un serveur DNS plutôt qu’un site Web, tout ce que nous avons à faire est de remplacer le curl commande avec le dig une.

#!/bin/bash

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

echo "The external IP address is $extaddr (from dig)"

Enregistrez-le sous le 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 l’impression d’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é au extaddr variable.

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.

★★★★★