
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 pourrait vous aider à le suivre dans le monde physique, s'assurer que les serveurs sont situés dans des points d'accès régionaux.
Chaque serveur Internet a une adresse IP publique. Ceci est mappé directement sur le serveur ou est mappé sur un routeur qui envoie le trafic à ce serveur. Les adresses IP nous donnent une idée de l'endroit où se trouve ce serveur dans le monde. Nous pouvons obtenir ces données de géolocalisation via deux API ouvertes, fournis par ipinfo.co et IP Vigilante et les utiliser pour voir 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; vous permet uniquement de voir la zone générale de l'adresse IP.
Se connecter à un système distant
Vous exécuterez les commandes suivantes sur le serveur Linux ou d'autres systèmes distants que vous souhaitez géolocaliser, vous devez donc d'abord vous connecter au serveur et entrer un shell. Par exemple, peut se connecter via SSH. Vous pouvez exécuter les commandes sur votre système local pour trouver votre emplacement, Mais vous savez probablement déjà où vous êtes!
Installer curl et jq
Nous avons besoin de deux outils pour entrer dans l'API de géolocalisation: curl
faire des requêtes HTTP et jq
pour traiter les données JSON que nous obtenons. Ouvrez un terminal et utilisez apt-get
pour installer ces outils sur des systèmes basés sur Ubuntu ou Debian. Sur d'autres distributions Linux, utilisez l'outil d'installation de paquet de votre distribution Linux.
sudo apt-get installer curl jq
Trouver 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 curl
pour faire un appel API à ipinfo.io dans la fenêtre de votre terminal.
boucle https://ipinfo.io/ip
Obtenir les données de localisation de l'API
Maintenant que nous avons l'IP publique du serveur, on peut faire un appel à l'API ipvigilante.com pour obtenir les données de géolocalisation. Remplacer <your ip address>
avec l'adresse que vous avez retournée dans la commande précédente.
boucle https://ipvigilante.com/<votre adresse IP>
Regardons de plus près les données que nous obtenons de cet appel:
L'API renvoie la ville, le pays et le continent où réside notre serveur. Il renvoie également les coordonnées approximatives de latitude et de longitude, au cas où nous voudrions dessiner ce serveur sur une carte interactive. nous utiliserons “latitude”, “longitude”, “nombre_ciudad” et “nombre_país” dans notre script. Les jq
La commande comprend comment traiter les données de l'API et extraire ces quatre champs.
Créer un script pour automatiser l'appel d'API
Nous pouvons créer un script qui prend les données de géolocalisation et les écrit dans un fichier au format CSV. Les données seront écrites dans un fichier appelé server_location.txt
dans le /tmp/
annuaire. Ouvrez votre éditeur préféré et créez un script appelé geolocate.sh
. insérez le contenu du script ci-dessous et assurez-vous de remplacer l’adresse IP par la vôtre:
#!/bin/sh OUTPUT_FILE=/tmp/server_location.txt # Grab this server's public IP address PUBLIC_IP=`curl -s https://ipinfo.io/ip' # Call the geolocation API and capture the output curl -s https://ipvigilante.com/${PUBLIC_IP} | jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | en lecture -r LATITUDE; do read -r LONGITUDE read -r CITY read -r COUNTRY echo "${LATITUDE},${LONGUEUR},${VILLE},${PAYS}" | tr --supprimer " > ${OUTPUT_FILE} terminé
Enregistrez le script et revenez au terminal. Rendre le script exécutable à partir du terminal, octroi de l’autorisation d’exécution sur ce fichier.
chmod u+x geolocate.sh
Vous êtes maintenant prêt à l’essayer. Exécutez le geolocate.sh
script et vérifier le contenu du fichier de sortie:
./geolocate.sh
cat /tmp/server_location.txt
Mise à jour des données de géolocalisation au moins une fois par jour avec une tâche cron
Créez un travail cron pour notre serveur afin de mettre à jour votre géolocalisation et de l’enregistrer dans un fichier au moins une fois par jour. Le travail cron quotidien met à jour un fichier appelé server_location.txt
dans le /tmp/
dossier du serveur. Créer une tâche cron 24 heures est aussi simple que de mettre notre script dans le /etc/cron.daily
annuaire. Nous devons utiliser la commande sudo pour copier le fichier en tant qu'utilisateur root, pour éviter les problèmes d'autorisation. Exécutez la commande suivante pour copier geolocate.sh
Al /etc/cron.daily
annuaire.
sudo cp geolocate.sh /etc/cron.daily
Ces changements sont immédiats et notre script s'exécutera tous les 24 heures pour mettre à jour le contenu du /tmp/server_location.txt
Record. Nous pouvons utiliser ces données pour faire des choses sympas, comment tracer nos serveurs sur une carte, ainsi que de combiner la géolocalisation avec les enregistrements de trafic pour voir où dans le monde se trouvent les points d'accès de nos serveurs.
setTimeout(fonction(){
!fonction(F,b,e,v,m,t,s)
{si(f.fbq)revenir;n=f.fbq=fonction(){n.callMethod?
n.callMethod.apply(m,arguments):n.queue.push(arguments)};
si(!f._fbq)f._fbq=n;n.push=n;n.chargé=!0;n.version=’2.0′;
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertAvant(t,s) } (window, document,'scénario',
'https://connect.facebook.net/en_US/fbevents.js’);
fbq('init', « 335401813750447 »);
fbq('Piste', « Page View »);
},3000);