Wie Sie Ihr System die Geographische Lage Von einem Bash-Skript

0
313
Toria/Shutterstock.com

Finden Sie die geographische Lage von einem remote-Linux-system über offene APIs und ein einfaches bash-Skript. Geolocating ein server könnte helfen, Sie verfolgen ihn in der physischen Welt, die Gewährleistung der Server befinden sich in der regionalen hotspots.

Jeder server im internet hat eine öffentliche IP-Adresse. Dies ist entweder direkt auf dem server zugewiesen oder zugeordnet zu einem router, der sendet Datenverkehr an diesen server. IP-Adressen geben uns eine Ahnung, wo sich dieser server befindet sich in die Welt. Wir können dieses geolocation-Daten durch zwei offene APIs, zur Verfügung gestellt von ipinfo.co und IP-Vigilante und verwenden Sie es, um zu sehen, die Stadt, Staat und Land, verbunden mit einem server (oder einem anderen entfernten system. Dies nicht geben Ihnen eine genaue GPS-Position; nur können Sie den Allgemeinen Bereich der IP-Adresse.

Eine Verbindung zu einem Remote-System

Sie werden die folgenden Befehle ausgeführt werden, die auf dem Linux-server oder andere remote-Systeme, die Sie möchten geolocate, so müssen Sie die Verbindung zum server und Zugriff auf eine shell auf es zuerst. Sie können beispielsweise eine Verbindung über SSH. Sie könnten die Befehle auf dem lokalen system zu finden, seine Lage, aber Sie wahrscheinlich bereits wissen, wo Sie sind!

Curl installieren und jq

Wir benötigen zwei Werkzeuge zum Zugriff auf die geolocation API: curl, HTTP-Anforderungen und jq zur Verarbeitung der JSON-Daten, das bekommen wir zurück. Öffnen Sie ein terminal und verwenden Sie apt-get zum installieren dieser tools auf Ubuntu-oder Debian-basierte Systeme. Auf anderen Linux-Distributionen, verwenden Sie Ihre Linux-distribution Paket-Installations-tool statt.

sudo apt-get install curl jq

Finde der Server hat die Öffentliche IP-Adresse

Wir müssen auch die server die öffentliche IP-Adresse, bevor wir die geolocation-Daten. Verwenden Sie curl, um einen API-Aufruf ipinfo.io in Ihrem terminal-Fenster.

curl https://ipinfo.io/ip

Erhalten Sie Standort-Daten Aus Der API

Jetzt haben wir die öffentliche IP des Servers, die wir machen können, einen Anruf zu ipvigilante.com’s-API die geolocation-Daten. Ersetzen Sie <ip-Adresse> mit der Adresse, kam zurück in den vorherigen Befehl.

curl https://ipvigilante.com/<ip-Adresse>

Werfen wir einen genaueren Blick auf, was die Daten, die wir wieder von diesem Aufruf:

Die API gibt die Stadt, Land, Kontinent, in dem sich unsere server befinden. Es gibt auch den ungefähren breiten-und Längengrad Koordinaten, falls wir wollen, zeichnen Sie diese server auf einer interaktiven Karte. Wir werden mit “latitude”, “die Länge,” “city_name” und “country_name” in unserem Skript. Die jq-Befehl versteht, wie die Verarbeitung der API-Daten und extrahieren diese vier Felder aus.

Erstellen Sie ein Skript zum Automatisieren Der API-Aufruf

Wir können ein Skript erstellen, das packt die geolocation-Daten und schreibt Sie in eine Datei im CSV-format. Die Daten werden in eine Datei geschrieben werden genannt server_location.txt in der /tmp/ – Verzeichnis. Öffnen Sie Ihren Texteditor und erstellen Sie ein Skript mit dem Namen geolocate.sh . Einfügen der Inhalt des Skripts unten gezeigt, und ersetzen Sie die IP-Adresse mit Ihrem eigenen:

#!/bin/sh

OUTPUT_FILE=/tmp/server_location.txt

# Schnappen Sie sich diese server hat die öffentliche IP-Adresse
PUBLIC_IP=`curl -s https://ipinfo.io/ip`

# Rufen Sie die geolocation-API und erfassen Sie die Ausgabe
curl -s https://ipvigilante.com/169.255.X.X |
jq ‘.Daten.Breitengrad, .Daten.Längengrad .Daten.city_name, .Daten.country_name’ |
while read -r BREITENGRAD;
Lesen -r LÄNGE
Lesen -r STADT
Lesen -r LAND
echo “${BREITE},${LONGITUDE},${CITY},${LAND}” |
tr –delete ” >
${AUSGABEDATEI}
getan

Speichern Sie das Skript und gehen Sie zurück zum terminal. Machen Sie das Skript ausführbar aus dem terminal, durch die Vergabe des execute-Berechtigung für diese Datei.

chmod u+x geolocate.sh

Jetzt sind Sie bereit, es zu testen. Führen Sie die geolocate.sh Skript und überprüfen Sie den Inhalt der Ausgabedatei:

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

Aktualisierung der Geolocation-Daten Einmal Täglich Mit einem Cron-Job

Wir erstellen einen cron-job, um unsere server zu aktualisieren geolocation und speichern es in einer Datei einmal am Tag. Der tägliche cron-job aktualisiert eine Datei namens server_location.txt in der /tmp/ – Ordner des Servers. Die Schaffung eines 24-Stunden-cron-job ist genauso einfach wie mit unserem Skript in die /etc/cron.täglich-Verzeichnis. Wir müssen mit den sudo-Befehl zum kopieren der Datei als den root-Benutzer, um zu vermeiden, Erlaubnis Fragen. Führen Sie den folgenden Befehl kopieren geolocate.sh in /etc/cron.täglich-Verzeichnis.

sudo cp geolocate.sh /etc/cron.täglich

Diese änderungen werden sofort wirksam, und unser Skript wird alle 24 Stunden ausgeführt wird, aktualisieren Sie den Inhalt des /tmp/server_location.txt Datei. Wir können diese Daten verwenden, um interessante Dinge, wie zeichnen unsere Server auf einer Karte sowie die Kombination von geolocation mit traffic logs, um zu sehen, wo in der Welt unsere server-hotspots sind.