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:
- 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.
- Copier le fichier dans le répertoire /usr/local/bin avec la commande cp
- 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!