Hoe u het Systeem op de Geografische Locatie Van een Bash-Script

0
282
Toria/Shutterstock.com

U vindt de geografische locatie van een externe Linux-systeem via open Api ‘ s en een eenvoudige bash-script. Geolocating een server kan u helpen bijhouden van het in de fysieke wereld, zorgen voor servers bevinden zich in regionale hotspots.

Elke server op het internet is een openbare IP-adres. Dit is ofwel rechtstreeks worden toegewezen aan de server of toegewezen aan een router stuurt het verkeer naar de server. IP-adressen geven ons een idee over waar die server staat in de wereld. We kunnen dit geolocatie data door middel van twee open Api ‘ s, die door ipinfo.co en IP-Vigilante en het gebruiken om de stad, provincie en land verbonden met een server of een andere remote systeem. Dit hoeft niet met een precieze GPS-locatie, maar alleen kunt u het algemene gedeelte van het IP-adres.

Verbinding maken met een Extern Systeem

U zult de volgende opdrachten op de Linux-server of andere externe systemen die u wilt geolocate, dus u moet verbinding maken met de server en de toegang van een shell op het eerste. U kunt bijvoorbeeld een verbinding via SSH. Je kan de opdrachten uitvoeren op uw lokale systeem om de locatie te vinden, maar waarschijnlijk weet u al waar u ook bent!

Installeren krullen en jq

We moeten twee tools om toegang te krijgen tot de geolocatie-API: krullen te maken HTTP-verzoeken en-jq voor het verwerken van de gegevens van JSON dat krijgen we terug. Open een terminal en apt-get gebruiken voor het installeren van deze tools op Ubuntu of Debian-gebaseerde systemen. Op andere Linux distributies, gebruik maken van uw Linux-distributie pakket voor de installatie-tool in plaats.

sudo apt-get install krullen jq

De Server vinden het Openbare IP-Adres

We moeten ook de server het openbare IP-adres voordat we met de geolocatie data. Gebruik curl te maken van een API-aanroep ipinfo.io in je terminal venster.

krul https://ipinfo.io/ip

Voor Gegevens over de Ligging Van De API

Nu dat we met het openbare IP-adres van de server kunnen we een oproep om ipvigilante.com’s API te krijgen met de geolocatie data. Vervang <uw ip-adres> het adres dat kwam terug in de vorige opdracht.

krul https://ipvigilante.com/<ip-adres>

Laten we een kijkje nemen naar wat wij de gegevens terug te krijgen voor deze oproep:

De API geeft de stad, land en continent, in welke onze server zich bevindt. Ook geeft de geschatte lengte-en breedtegraden in geval willen we trekken deze server op een interactieve kaart. We gebruiken “latitude” “lengtegraad” “city_name,” en “country_name” in ons script. De jq opdracht begrijpt hoe de API-gegevens en het uittreksel van deze vier velden.

Het maken van een Script voor het Automatiseren van De API-Aanroep

Wij kunnen u een script maken dat grijpt de geolocatie gegevens en schrijft een bestand in CSV-formaat. De gegevens worden geschreven naar een bestand met de naam server_location.txt in de /tmp/ map. Open je editor en maak een script met de naam geolocate.sh . Plaats het script inhoud hieronder wordt weergegeven, en vervang het IP-adres met uw eigen:

#!/bin/sh

OUTPUT_FILE=/tmp/server_location.txt

# Pak deze server het openbare IP-adres
PUBLIC_IP=`curl -s https://ipinfo.io/ip`

# Bellen met de geolocatie-API en het vastleggen van de uitvoer
curl -s https://ipvigilante.com/169.255.X.X |
jq ‘.de gegevens.breedtegraad .de gegevens.breedtegraad .de gegevens.city_name, .de gegevens.country_name’ |
tijdens het lezen -r LATITUDE doen
lees -r BREEDTEGRAAD
lees -r-STAD
lees -r LAND
echo “${LATITUDE},${LENGTEGRAAD},$in{CITY},$in{LAND}” |
tr –delete ” >
${OUTPUT_FILE}
gedaan

Sla het script over en ga terug naar de terminal. Maak het script uitvoerbaar maken van de terminal, door het verlenen van de machtiging uitvoeren op dit bestand.

chmod u+x geolocate.sh

Nu bent u klaar om het uit te testen. Het uitvoeren van de geolocate.sh script en controleer de inhoud van het output bestand:

./geolocate.sh
kat /tmp/server_location.txt

Het bijwerken van de geo-locatie Keer per Dag Met een Cron Job

We maken een cron job om onze server bijwerken met de geolocatie en opslaan in een bestand eenmaal per dag. De dagelijkse cron-taak updates een bestand met de naam server_location.txt in de /tmp/ map van de server. Het maken van een 24-uurs cron job is net zo eenvoudig als het zetten van ons script in de /etc/cron.dagelijks directory. We moeten gebruik maken van het sudo commando om het bestand te kopiëren als de root gebruiker om te voorkomen dat de toestemming van problemen. Voer de volgende opdracht uit om te kopiëren geolocate.sh aan het /etc/cron.dagelijks directory.

sudo cp geolocate.sh /etc/cron.dagelijks

Deze wijzigingen zijn onmiddellijk en ons script zal elke 24 uur voor het bijwerken van de inhoud van de /tmp/server_location.txt -bestand. Wij kunnen deze gegevens gebruiken voor het doen interessante dingen, zoals het uitstippelen van onze servers op een kaart evenals het combineren met de geolocatie verkeer logs om te zien waar in de wereld op onze server hotspots zijn.