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.

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

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

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

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.

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

Ensuite on exécute le fichier:

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.

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:

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.

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

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

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!

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 comment les données de vos commentaires sont utilisées.

Creative Commons License CC BY-SA 4.0