Obtenez votre IP et localisation sous Linux

Dans la veine de ce précédent article, nous allons voir comment automatiser rapidement une tâche simple: la récupération de notre géolocalisation dans un terminal Linux. Ceci peut être utile par exemple si vous voulez vérifier que votre VPN est bien connecté et fonctionne correctement.

Apeçu de myloc en action

Avant d’automatiser ceci, voyons déjà comment récupérer notre adresse IP et géolocalisation via le terminal. Pour récupérer votre adresse IP, vous pouvez envoyer une requête vers icanhazip.com via la commande curl:

curl icanhazip.com

Récupération de l'adresse IP publique avec curl qui requête icanhazip.com

Une fois l’adresse IP récupérée, vous pouvez faire de même avec le service ipinfo.io, il vous suffira d’ajouter en fin d’URL l’IP récupérée précédemment:

curl ipinfo.io/XX.XX.XX.XX

Gélocalisation de notre addresse IP avec curl qui récupère les infos sur le bien nommé ipinfo.io

Ceci étant validé, il ne reste plus qu’à tout exécuter via un bash script que nous créons avec cette commande (vous pouvez remplacer « vim » par l’éditeur de votre choix):

vim myloc.sh

Création du fichier myloc.sh avec Vim

Premier test pour l’IP, nous créons une variable dont la valeur est l’exécution de la commande curl qui requête le domaine icanhazip.com (placer une commande dans $() exécute la commande qui se trouve entre les parenthèses) et qu’on affiche avec echo pour vérifier que tout fonctionne.

Ajout de la première action dans myloc.sh pour récupérer l'adresse IP

On donne tout d’abord les droits d’exécution au fichier avec la commande chmod:

Ensuite on exécute le fichier:

Premier test de myloc.sh, on récupère bien notre adresse IP

Première exécution réussie, on récupère bien l’IP. Maintenant, faisons la même chose pour la géolocalisation qu’on récupère sur ipinfo.io et qu’on affiche aussi avec echo. Dans ce contexte, on lui communique l’adresse IP via la variable $myip creéée plus tôt et qui contient le résultat envoyé par icanhazip.com.

Ajout de la deuxième action dans myloc.sh pour gélocaliser notre adresse IP

La commande curl va donc récupérer l’IP sur icanhazip.com et la sauvegarder dans la variable myip. Puis cette même commande curl va récupérer l’adresse IP sur ipinfo.io en communiquant le contenu de la variable $myip. Testons:

Second test, notre adresse IP est bien récupérée et géolocalisée mais l'affichage du code json est un peu en vrac

Nous récupérons bien le résultat mais tout est écrit en vrac, pas très facile à lire. L’astuce pour avoir ce résultat, écrit en JSON, bien indenté serait d’envoyer via un pipe la chaîne de caractère écrite par echo vers le processeur JSON nommé jq. Il est généralement installé sur la plupart des distrib Linux, vous pouvez si besoin l’installer via apt, dnf, pacman ou autres selon l’OS que vous avez entre les mains ou vous rendre sur leur repo Github pour plus de détails.

Amélioration de l'affichage de myloc.sh avec jq

Testons cette dernière version, le résultat est maintenant indenté et colorisé.

Troisième et dernier test de myloc.sh pour voir si l'affichage est plus lisible

Vous pouvez maintenant mettre ce script de côté, facilement accessible, et l’exécuter manuellement en tapant ./myloc.sh quand vous en avez besoin. Ou vous pouvez pour plus de simplicité l’ajouter aux commandes prises en compte par votre système.

Il existe différentes manières de procéder. On peut créer un alias dans le fichier .bashrc par exemple, ou l’ajouter avec les autres commandes dans /usr/local/bin, ce que je vais choisir ici. Pour cela, je vais:

  1. Supprimer l’extension .sh pour que ce soit moins long à taper par la suite avec la commande mv. Sur les systèmes GNU/Linux tout est fichier, l’extension n’est pas indispensable et aide bien souvent les humains plus que le système lui-même.
  2. Copier le fichier dans le répertoire /usr/local/bin avec la commande cp
  3. Lui donner les permissions d’exécution avec la commande chmod
Copie de myloc.sh vers /usr/local/bin et sans l'extension .sh pour le rendre ensuite exécutable avec la commande chmod +x

Remarque: On pourrait fusionner les 2 premières étapes en tapant directement le nom du fichier sans extension en guise de destination dans la commande mv (mv myloc.sh /usr/local/bin/myloc), j’ai juste séparé par souci de compréhension

On peut maintenant taper « bash » pour que la nouvelle commande soit prise en compte, ou simplement fermer le terminal et l’ouvrir à nouveau. On exécute à nouveau, tout fonctionne!

Test de l'exécutable myloc, tout fonctionne

En vous basant sur ce même principe, vous pouvez maintenant automatiser les commandes que vous tapez souvent, même si une commande requiert le résultat d’une autre commande.

Le code est disponible sur Github si besoin. Bon week-end!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

Creative Commons License CC BY-SA 4.0