Page d'accueil » comment » Comment obtenir l'emplacement géographique de votre système à partir d'un script Bash

    Comment obtenir l'emplacement géographique de votre système à partir d'un script Bash

    Toria / Shutterstock.com

    Vous pouvez trouver l'emplacement géographique d'un système Linux distant à l'aide d'API ouvertes et d'un simple script bash. La géolocalisation d'un serveur peut vous aider à le suivre dans le monde physique, en vous assurant que les serveurs sont situés dans des points chauds régionaux..

    Chaque serveur sur Internet a une adresse IP publique. Ceci est soit directement assigné au serveur, soit à un routeur qui envoie du trafic à ce serveur. Les adresses IP nous donnent un indice sur l'emplacement de ce serveur dans le monde. Nous pouvons obtenir ces données de géolocalisation via deux API ouvertes, fournies par ipinfo.co et IP Vigilante, et les utiliser pour afficher la ville, l'état et le pays associés à un serveur ou à un autre système distant. Cela ne vous donne pas une position GPS précise; il vous permet simplement de voir la zone générale de l'adresse IP.

    Se connecter à un système distant

    Vous allez exécuter les commandes suivantes sur le serveur Linux ou d'autres systèmes distants que vous souhaitez géolocaliser. Vous devez donc vous connecter au serveur et accéder à un shell sur celui-ci. Par exemple, vous pouvez vous connecter via SSH. Vous pouvez exécuter les commandes sur votre système local pour trouver son emplacement, mais vous savez probablement déjà où vous vous trouvez.!

    Installer curl et jq

    Nous avons besoin de deux outils pour accéder à l'API de géolocalisation: boucle faire des requêtes HTTP et  jq pour traiter les données JSON que nous recevons. Ouvrez un terminal et utilisez  apt-get installer ces outils sur des systèmes Ubuntu ou Debian. Sur d'autres distributions Linux, utilisez plutôt l'outil d'installation de paquet de votre distribution Linux.

    sudo apt-get install curl jq

    Rechercher l'adresse IP publique du serveur

    Nous avons également besoin de l'adresse IP publique du serveur avant de pouvoir obtenir les données de géolocalisation. Utilisation boucle faire un appel API à ipinfo.io dans la fenêtre de votre terminal.

    curl https://ipinfo.io/ip

    Obtenir les données d'emplacement de l'API

    Maintenant que nous avons l'adresse IP publique du serveur, nous pouvons appeler l'API de ipvigilante.com pour obtenir les données de géolocalisation. Remplacer avec l'adresse qui est revenue dans la commande précédente.

    curl https://ipvigilante.com/

    Regardons de plus près les données que nous obtenons de cet appel:

    L'API renvoie la ville, le pays et le continent dans lesquels notre serveur réside. Il renvoie également les coordonnées approximatives de latitude et de longitude, au cas où nous souhaiterions dessiner ce serveur sur une carte interactive. Nous utiliserons «latitude», «longitude», «nom de la ville» et «nom du pays» dans notre script. le  jq commande comprend comment traiter les données de l'API et extraire ces quatre champs sur.

    Création d'un script pour automatiser l'appel API

    Nous pouvons créer un script qui récupère les données de géolocalisation et les écrit dans un fichier au format CSV. Les données seront écrites dans un fichier appelé emplacement_serveur.txt dans le / tmp / annuaire. Ouvrez votre éditeur préféré et créez un script nommé geolocate.sh . Insérez le contenu du script ci-dessous et veillez à remplacer l'adresse IP par la vôtre:

    #! / bin / sh OUTPUT_FILE = / tmp / emplacement_serveur.txt # Saisissez l'adresse IP publique de ce serveur PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Appelez l'API de géolocalisation et capturez la sortie curl -s https : //ipvigilante.com/$ PUBLIC_IP | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | \ while read -r LATITUDE; do read -r LONGITUDE read -r CITY read -r COUNTRY echo "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | \ tr --delete \ "> \ $ OUTPUT_FILE terminé 

    Enregistrez le script et revenez au terminal. Rendre le script exécutable à partir du terminal, en accordant l'autorisation d'exécution sur ce fichier.

    chmod u + x geolocate.sh

    Maintenant vous êtes prêt à le tester. Exécuter le geolocate.sh script et vérifiez le contenu du fichier de sortie:

    ./geolocate.sh cat /tmp/server_location.txt 

    Mise à jour des données de géolocalisation une fois par jour avec une tâche Cron

    Créons un travail cron pour que notre serveur mette à jour sa géolocalisation et enregistrez-le dans un fichier une fois par jour. Le travail quotidien cron met à jour un fichier appelé emplacement_serveur.txt dans le / tmp / dossier du serveur. Créer un travail cron de 24 heures est aussi simple que de placer notre script dans le /etc/cron.daily annuaire. Nous devons utiliser la commande sudo pour copier le fichier en tant qu'utilisateur root, afin d'éviter les problèmes d'autorisation. Exécutez la commande suivante pour copier geolocate.sh au /etc/cron.daily annuaire.

    sudo cp geolocate.sh /etc/cron.daily

    Ces modifications sont immédiates et notre script s’exécutera toutes les 24 heures pour mettre à jour le contenu du /tmp/server_location.txt fichier. Nous pouvons utiliser ces données pour faire des choses intéressantes, comme tracer nos serveurs sur une carte et combiner la géolocalisation avec des journaux de trafic pour voir où se trouvent nos hotspots de serveurs dans le monde..