So ermitteln Sie den geografischen Standort Ihres Systems aus einem Bash-Skript
Sie können den geografischen Standort eines Remote-Linux-Systems mithilfe von offenen APIs und einem einfachen Bash-Skript ermitteln. Durch die geografische Zuordnung eines Servers können Sie ihn in der physischen Welt nachverfolgen und sicherstellen, dass sich Server in regionalen Hotspots befinden.
Jeder Server im Internet verfügt über eine öffentlich zugängliche IP-Adresse. Diese wird entweder direkt dem Server oder einem Router zugewiesen, der Datenverkehr an diesen Server sendet. IP-Adressen geben uns einen Hinweis darauf, wo sich dieser Server in der Welt befindet. Wir können diese Geolocation-Daten über zwei offene APIs abrufen, die von ipinfo.co und IP Vigilante bereitgestellt werden, und die Stadt, den Bundesstaat und das Land verwenden, die einem Server oder einem anderen Remote-System zugeordnet sind. Dies gibt Ihnen keine genaue GPS-Position. Sie sehen nur den allgemeinen Bereich der IP-Adresse.
Verbinden Sie sich mit einem Remote-System
Sie führen die folgenden Befehle auf dem Linux-Server oder anderen Remote-Systemen aus, die Sie geolokalisieren möchten. Sie müssen sich daher zuerst mit dem Server verbinden und auf eine Shell darauf zugreifen. Beispielsweise können Sie über SSH eine Verbindung herstellen. Sie können die Befehle auf Ihrem lokalen System ausführen, um den Speicherort zu ermitteln, aber Sie wissen wahrscheinlich bereits, wo Sie sich befinden!
Installieren Sie curl und jq
Wir benötigen zwei Tools, um auf die Geolocation-API zuzugreifen: locken
HTTP-Anfragen stellen und jq
um die JSON-Daten zu verarbeiten, die wir zurückerhalten. Öffnen Sie ein Terminal und verwenden Sie apt-get
um diese Tools auf Ubuntu oder Debian-basierten Systemen zu installieren. Verwenden Sie auf anderen Linux-Distributionen stattdessen das Paketinstallationstool Ihrer Linux-Distribution.
sudo apt-get install curl jq
Suchen Sie die öffentliche IP-Adresse des Servers
Wir benötigen auch die öffentliche IP-Adresse des Servers, bevor wir die Standortdaten abrufen können. Benutzen locken
So rufen Sie ipinfo.io in Ihrem Terminalfenster auf.
curl https://ipinfo.io/ip
Standortdaten von der API abrufen
Da wir nun die öffentliche IP des Servers haben, können wir die API von ipvigilante.com aufrufen, um die Geolocation-Daten abzurufen. Ersetzen mit der Adresse, die im vorherigen Befehl zurückgegeben wurde.
Locken https://ipvigilante.com/
Schauen wir uns genauer an, welche Daten wir von diesem Aufruf erhalten:
Die API gibt die Stadt, das Land und den Kontinent zurück, in dem sich unser Server befindet. Es gibt auch die ungefähren Längen- und Breitengrade zurück, falls wir diesen Server auf eine interaktive Karte zeichnen möchten. Wir werden in unserem Skript "Latitude", "Longitude", "City_name" und "Country_name" verwenden. Das jq
Der Befehl versteht, wie die API-Daten verarbeitet und diese vier Felder extrahiert werden.
Erstellen eines Skripts zum Automatisieren des API-Aufrufs
Wir können ein Skript erstellen, das die Geolocation-Daten erfasst und in eine Datei im CSV-Format schreibt. Die Daten werden in eine aufgerufene Datei geschrieben server_location.txt
in dem / tmp /
Verzeichnis. Öffnen Sie Ihren bevorzugten Editor und erstellen Sie ein Skript mit dem Namen geolocate.sh
. Fügen Sie den unten gezeigten Skriptinhalt ein und ersetzen Sie die IP-Adresse durch Ihre eigene:
#! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Holen Sie sich die öffentliche IP-Adresse dieses Servers. PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Rufen Sie die Geolocation-API auf und erfassen Sie die Ausgabe-Curl -s-https : //ipvigilante.com/$ PUBLIC_IP | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | \ while read -r LATITUDE; lesen Sie -r LONGITUDE lesen -r STADT lesen -r COUNTRY echo "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | \ tr --delete \ "> \ $ OUTPUT_FILE ist fertig
Speichern Sie das Skript und kehren Sie zum Terminal zurück. Machen Sie das Skript vom Terminal aus ausführbar, indem Sie die Ausführungsberechtigung für diese Datei erteilen.
chmod u + x geolocate.sh
Jetzt können Sie es testen. Führen Sie das aus geolocate.sh
Skript und überprüfen Sie den Inhalt der Ausgabedatei:
./geolocate.sh cat /tmp/server_location.txt
Aktualisieren der Geolocation-Daten einmal täglich mit einem Cron-Job
Erstellen wir einen Cron-Job, damit unser Server seine geografische Position aktualisiert und ihn einmal täglich in einer Datei speichert. Der tägliche Cron-Job aktualisiert eine Datei namens server_location.txt
in dem / tmp /
Ordner des Servers. Das Erstellen eines 24-Stunden-Cron-Jobs ist so einfach wie das Einfügen unseres Skripts in den /etc/cron.daily
Verzeichnis. Wir müssen den Befehl sudo verwenden, um die Datei als Rootbenutzer zu kopieren, um Berechtigungsprobleme zu vermeiden. Führen Sie den folgenden Befehl zum Kopieren aus geolocate.sh
zum /etc/cron.daily
Verzeichnis.
sudo cp geolocate.sh /etc/cron.daily
Diese Änderungen sind sofort wirksam und unser Skript wird alle 24 Stunden ausgeführt, um den Inhalt des zu aktualisieren /tmp/server_location.txt
Datei. Wir können diese Daten verwenden, um interessante Dinge zu tun, z. B. das Plotten unserer Server auf einer Karte sowie die Kombination von Standortbestimmung mit Verkehrsprotokollen, um zu sehen, wo sich unsere Server-Hotspots auf der Welt befinden.