Pagrindinis » kaip » Kaip gauti sistemos geografinę vietą iš „Bash Script“

    Kaip gauti sistemos geografinę vietą iš „Bash Script“

    Toria / Shutterstock.com

    Geografinę nuotolinės Linux sistemos vietą galite rasti naudojant atviras API ir paprastą „bash“ scenarijų. Serverio geolocavimas gali padėti jums jį stebėti fiziniame pasaulyje, užtikrinant, kad serveriai būtų regionuose.

    Kiekvienas interneto serveris turi viešą IP adresą. Tai tiesiogiai priskiriamas serveriui arba priskiriamas maršrutizatoriui, kuris siunčia srautą į tą serverį. IP adresai suteikia mums informacijos apie tai, kur tas serveris yra pasaulyje. Mes galime gauti šiuos geolokacijos duomenis per dvi atviras API, kurias teikia „ipinfo.co“ ir „IP Vigilante“, ir jį naudoti norėdami pamatyti miestą, valstybę ir šalį, susijusią su serveriu ar kita nuotoline sistema. Tai nesuteikia jums tikslios GPS vietos; jis tiesiog leidžia matyti bendrą IP adreso sritį.

    Prisijunkite prie nuotolinės sistemos

    „Linux“ serveryje ar kitose nuotolinėse sistemose, kurias norite geografuoti, bus rodomos šios komandos, todėl pirmiausia turite prisijungti prie serverio ir prie jo patekti. Pavyzdžiui, galite prisijungti per SSH. Jūs galite paleisti vietinės sistemos komandas, kad surastumėte savo vietą, bet tikriausiai jau žinote, kur esate!

    Įdiekite garbaną ir jq

    Norint pasiekti geolokacijos API, reikia dviejų priemonių: garbanojimas atlikti HTTP užklausas ir  jq apdoroti JSON duomenis, kuriuos grįžtame. Atidarykite terminalą ir naudokite  apt-get įdiegti šiuos įrankius Ubuntu arba Debian sistemose. Kitose „Linux“ platinimo vietose naudokite „Linux“ platinimo paketo diegimo įrankį.

    sudo apt-get install curl jq

    Rasti serverio viešąjį IP adresą

    Mums taip pat reikia serverio viešojo IP adreso, kad galėtume gauti geolokacijos duomenis. Naudokite garbanojimas padaryti terminalo lange API skambutį į „ipinfo.io“.

    curl https://ipinfo.io/ip

    Gaukite vietos duomenis iš API

    Dabar, kai mes turime viešąjį IP serverį, mes galime skambinti į „ipvigilante.com“ API, kad gautume geolokacijos duomenis. Pakeisti su adresu, kuris grįžo į ankstesnę komandą.

    curl https://ipvigilante.com/

    Pažvelkime į tai, kokie duomenys grįšime iš šio skambučio:

    API grąžina miestą, šalį ir žemyną, kuriame yra mūsų serveris. Ji taip pat grąžina apytikslias platumos ir ilgumos koordinates, jei norime šį serverį atkreipti į interaktyvų žemėlapį. Mūsų scenarijuje naudosime „platumą“, „ilgumą“, „miesto pavadinimą“ ir „country_name“. The  jq komanda supranta, kaip apdoroti API duomenis ir išskirti šiuos keturis laukus.

    Skripto kūrimas API skambučiams automatizuoti

    Galime sukurti scenarijų, kuris užfiksuoja geolokacijos duomenis ir įrašo jį į CSV formato failą. Duomenys bus įrašyti į failą, vadinamą server_location.txt viduje konors / tmp / katalogą. Atidarykite mėgstamą redaktorių ir sukurkite pavadinimą geolocate.sh . Įterpkite žemiau pateiktą scenarijaus turinį ir įsitikinkite, kad pakeisite IP adresą savo:

    # !!! : //ipvigilante.com/$ PUBLIC_IP | q '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | skaitykite -r LATITUDE; skaityti -r LONGITUDE skaityti -r CITY skaityti -r COUNTRY aido „$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY“ | r - panaikinti „> OUTPUT_FILE 

    Išsaugokite scenarijų ir grįžkite į terminalą. Padarykite scenarijų vykdomąjį iš terminalo, suteikdami vykdymo leidimą šiam failui.

    chmod u + x geolocate.sh

    Dabar esate pasiruošę išbandyti. Paleiskite geolocate.sh scenarijų ir patikrinkite išvesties failo turinį:

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

    Geolokacijos duomenų atnaujinimas vieną kartą per dieną, naudojant „Cron Job“

    Kurkime „cron“ darbą, kad mūsų serveris atnaujintų savo geografinę vietą ir išsaugotų ją į failą kartą per dieną. Kasdien atnaujinamas Cron užduoties failas server_location.txt viduje konors / tmp / serverio aplanką. 24 valandų trukmės crono darbo kūrimas yra toks pat lengvas, kaip mūsų scenarijų įdėjimas į /etc/cron.daily katalogą. Kad išvengtume leidimo problemų, privalome naudoti „sudo“ komandą, kad nukopijuotumėte failą kaip root naudotoją. Norėdami kopijuoti, vykdykite šią komandą geolocate.sh į /etc/cron.daily katalogą.

    sudo cp geolocate.sh /etc/cron.daily

    Šie pakeitimai yra neatidėliotini, o mūsų scenarijus bus rodomas kas 24 valandas, kad atnaujintumėte /tmp/server_location.txt failą. Šiuos duomenis galime naudoti, kad galėtume atlikti įdomių dalykų, pvz., Braižyti mūsų serverius žemėlapyje, taip pat derinti geolokaciją su srauto žurnalais, kad pamatytume, kur pasaulyje yra mūsų serverio karštųjų taškų..