Homepage » hogyan kell » Hogyan kaphatod meg a rendszer földrajzi helyét egy Bash Script-ből

    Hogyan kaphatod meg a rendszer földrajzi helyét egy Bash Script-ből

    Toria / Shutterstock.com

    A távoli Linux-rendszer földrajzi elhelyezkedését nyílt API-k és egyszerű bash-szkript segítségével találhatja meg. A kiszolgáló geolokálása segíthet a fizikai világban való nyomon követésében, biztosítva, hogy a szerverek a helyi hotspotokban találhatók.

    Minden internetkiszolgáló nyilvános nézőpontú IP-címmel rendelkezik. Ez vagy közvetlenül a kiszolgálóhoz van hozzárendelve, vagy hozzárendelve egy útválasztóhoz, amely forgalmat küld a kiszolgálónak. Az IP-címek egy nyomot adnak arról, hogy hol található a szerver a világon. Ezt a földrajzi elhelyezkedési adatot két nyílt API-n keresztül kaphatjuk meg, amelyeket az ipinfo.co és az IP Vigilante biztosít, és használjuk, hogy megnézzük a várost, államot és országot, amely egy szerverhez vagy más távoli rendszerhez kapcsolódik. Ez nem ad pontos GPS-helyet; csak az IP-cím általános területét láthatja.

    Csatlakozás egy távoli rendszerhez

    A következő parancsokat futtathatja a Linux-kiszolgálón vagy más távoli rendszerekben, amelyekkel geolocate-t szeretne létrehozni, így először csatlakoznia kell a kiszolgálóhoz és hozzáférnie kell egy shellhez. Például SSH-n keresztül csatlakozhat. Futtathatja a helyi rendszeren lévő parancsokat, hogy megtalálja a helyét, de valószínűleg már tudja, hogy hol van!

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

    Két eszközre van szükség a földrajzi elhelyezkedés API eléréséhez: curl HTTP kérések és  JQ a JSON-adatok feldolgozásához. Nyissa meg a terminált és használja  apt-get ezeket az eszközöket az Ubuntu vagy a Debian-alapú rendszerekre telepíteni. Más Linux disztribúcióknál inkább használja a Linux disztribúció csomag telepítési eszközeit.

    sudo apt-get install curl jq

    Keresse meg a kiszolgáló nyilvános IP-címét

    Szükségünk van a kiszolgáló nyilvános IP-címére, mielőtt megkapnánk a földrajzi helymeghatározási adatokat. Használat curl API-hívást kezdeményezni az ipinfo.io-hoz a terminálablakban.

    curl https://ipinfo.io/ip

    Helyadatok beszerzése az API-ból

    Most, hogy rendelkezünk a szerver nyilvános IP-vel, hívást kezdeményezhetünk az ipvigilante.com API-jára, hogy megkapjuk a földrajzi helyadatok adatait. Cserélje az előző parancsban visszaadott címmel.

    curl https://ipvigilante.com/

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

    Az API visszaadja azt a várost, országot és kontinenset, amelyben a szerverünk tartózkodik. Visszatér a hozzávetőleges szélességi és hosszúsági koordinátákhoz is, amennyiben ezt a kiszolgálót interaktív térképre szeretnénk rajzolni. Szkriptünkben „szélességi”, „hosszúsági”, „city_name” és „country_name” lesz. A  JQ A parancs megérti, hogyan kell feldolgozni az API-adatokat, és kivonni ezeket a négy mezőt.

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

    Létrehozhatunk egy olyan forgatókönyvet, amely megragadja a geolokációs adatokat, és CSV formátumú fájlba írja. Az adatokat egy hívott fájlba írjuk server_location.txt ban,-ben / Tmp / Könyvtár. Nyissa meg kedvenc szerkesztőjét, és hozzon létre egy nevű parancsfájlt geolocate.sh . Helyezze be az alább látható szkript tartalmát, és győződjön meg róla, hogy az IP-címet sajátra cseréli:

    #! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Fogd meg a szerver nyilvános IP-címét PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Hívd a geolokációs API-t, és rögzítsd a https : //ipvigilante.com/$ PUBLIC_IP | q '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | olvassa el -r LATITUDE; olvasd el -r LONGITUDE olvasni -r CITY olvasni -r COUNTRY echo "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | r --delete "> OUTPUT_FILE kész 

    Mentse el a parancsfájlt, és térjen vissza a terminálhoz. Végezze el a parancsfájl futtatását a terminálról, a végrehajtási engedély megadásával.

    chmod u + x geolocate.sh

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

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

    A Geolocation adatok naponta frissítése Cron Job segítségével

    Hozzunk létre egy cron munkát, hogy szerverünk frissítse a földrajzi elhelyezkedését, és naponta egyszer mentse el egy fájlba. A napi cron job frissíti a hívott fájlt server_location.txt ban,-ben / Tmp / a szerver mappáját. A 24 órás cron munka létrehozása olyan egyszerű, mint a forgatókönyv beillesztése /etc/cron.daily Könyvtár. A jogosultsági problémák elkerülése végett a sudo paranccsal kell másolni a fájlt root felhasználóként. Futtassa a következő parancsot a másoláshoz geolocate.sh hoz /etc/cron.daily Könyvtár.

    sudo cp geolocate.sh /etc/cron.daily

    Ezek a változtatások azonnal megtörténnek, és a parancsfájl 24 óránként fog futni, hogy frissítse a tartalom tartalmát /tmp/server_location.txt fájlba. Ezeket az adatokat érdekes dolgok elvégzésére használhatjuk, mint például a kiszolgálók térképen történő ábrázolása, valamint a földrajzi elhelyezkedés kombinálása a forgalmi naplókkal, hogy megnézhessük, hol vannak a világon a kiszolgáló hotspotjaink..