A rendszer földrajzi helyének meghatározása Bash-szkriptből

Nyílt API-k és egy egyszerű bash szkript segítségével megkeresheti egy távoli Linux rendszer földrajzi helyét. A kiszolgáló földrajzi helyének meghatározása segíthet nyomon követni azt a fizikai világban, biztosítva, hogy a szerverek regionális hotspotokon helyezkedjenek el.

Az interneten minden szerver rendelkezik nyilvános IP-címmel. Ez vagy közvetlenül a kiszolgálóhoz van hozzárendelve, vagy egy olyan útválasztóhoz van hozzárendelve, amely forgalmat küld a szerverre. Az IP-címek támpontot adnak nekünk arról, hogy a szerver hol található a világon. Ezeket a földrajzi helyadatokat két nyílt API-n keresztül kaphatjuk meg, amelyeket az ipinfo.co és az IP Vigilante biztosít, és felhasználhatjuk a szerverhez vagy más távoli rendszerhez társított város, állam és ország megtekintéséhez. Ez nem ad pontos GPS-helyzetet; csak az IP-cím általános területét látja.

Csatlakozás egy távoli rendszerhez

A következő parancsokat fogja futtatni azon a Linux-kiszolgálón vagy más távoli rendszeren, amelyet földrajzi helyzetbe szeretne helyezni, ezért először csatlakoznia kell a kiszolgálóhoz, és hozzá kell férnie egy shell-hez. Például SSH-n keresztül csatlakozhat. Futtathatja a parancsokat a helyi rendszeren, hogy megtalálja a helyét, de valószínűleg már tudja, hol van!

  Hogyan működik a Google Asszisztens a Chrome-ban, és hogyan lehet engedélyezni vagy letiltani

Telepítse a curl-t és a jq-t

Két eszközre van szükségünk a földrajzi helymeghatározási API eléréséhez: a curl-re a HTTP-kérésekhez és a jq-ra a visszakapott JSON-adatok feldolgozásához. Nyisson meg egy terminált, és az apt-get használatával telepítse ezeket az eszközöket Ubuntu vagy Debian alapú rendszerekre. Más Linux disztribúciók esetén használja inkább a Linux disztribúció csomagtelepítő eszközét.

sudo apt-get install curl jq

Keresse meg a szerver nyilvános IP-címét

Szükségünk van a szerver nyilvános IP-címére is, mielőtt megkapjuk a földrajzi helyadatokat. A curl használatával API-hívást kezdeményezhet az ipinfo.io címre a terminálablakban.

curl https://ipinfo.io/ip

Helyadatok beszerzése az API-ból

Most, hogy megvan a szerver nyilvános IP-címe, felhívhatjuk az ipvigilante.com API-ját, hogy megkapjuk a földrajzi helyadatokat. Cserélje ki az előző parancsban visszaadott címmel.

curl https://ipvigilante.com/

Nézzük meg közelebbről, milyen adatokat kapunk vissza ebből a hívásból:

  Az Emoji Mini létrehozása a Google billentyűzeten

Az API azt a várost, országot és kontinenst adja vissza, ahol a szerverünk található. Visszaadja a hozzávetőleges szélességi és hosszúsági koordinátákat is, arra az esetre, ha ezt a szervert interaktív térképre szeretnénk rajzolni. A szkriptünkben a „szélesség”, „hosszúság”, „város_neve” és „ország_neve” kifejezéseket fogjuk használni. A jq parancs megérti, hogyan kell feldolgozni az API-adatokat és kivonni ezt a négy mezőt.

Szkript létrehozása az API-hívás automatizálásához

Létrehozhatunk egy szkriptet, amely megragadja a földrajzi helyadatokat, és CSV formátumban fájlba írja. Az adatok a /tmp/ könyvtárban található server_location.txt fájlba kerülnek. Nyissa meg kedvenc szerkesztőjét, és hozzon létre egy geolocate.sh nevű szkriptet. Illessze be az alább látható szkript tartalmát, és cserélje ki az IP-címet a sajátjára:

#!/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' | 
        while read -r LATITUDE; do
                read -r LONGITUDE
                read -r CITY
                read -r COUNTRY
                echo "${LATITUDE},${LONGITUDE},${CITY},${COUNTRY}" | 
                        tr --delete " > 
                        ${OUTPUT_FILE}
        done

Mentse el a szkriptet, és térjen vissza a terminálhoz. Tegye végrehajthatóvá a szkriptet a terminálról úgy, hogy ehhez a fájlhoz megadja a végrehajtási engedélyt.

chmod u+x geolocate.sh

Most készen áll a tesztelésre. Futtassa a geolocate.sh szkriptet, és ellenőrizze a kimeneti fájl tartalmát:

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

A földrajzi helymeghatározási adatok napi egyszeri frissítése Cron-munkával

Hozzunk létre egy cron feladatot, hogy a szerverünk frissítse a földrajzi elhelyezkedését, és naponta egyszer mentse el egy fájlba. A napi cron feladat frissíti a szerver /tmp/ mappájában található server_location.txt fájlt. Egy 24 órás cron-feladat létrehozása olyan egyszerű, mintha a szkriptünket az /etc/cron.daily könyvtárba helyeznénk. A sudo parancsot kell használnunk a fájl másolásához root felhasználóként, hogy elkerüljük az engedélyekkel kapcsolatos problémákat. Futtassa a következő parancsot a geolocate.sh fájl /etc/cron.daily könyvtárba másolásához.

sudo cp geolocate.sh /etc/cron.daily

Ezek a változtatások azonnaliak, és a szkriptünk 24 óránként lefut, hogy frissítse a /tmp/server_location.txt fájl tartalmát. Ezeket az adatokat érdekes dolgokra használhatjuk fel, például a szervereinket térképen ábrázolhatjuk, valamint a földrajzi helymeghatározást a forgalmi naplókkal kombinálhatjuk, hogy megtudjuk, hol vannak a világban szervereink hotspotjaink.

  5 legjobb memóriafigyelő eszköz és szoftver