Kuinka saada järjestelmän maantieteellinen sijainti Bash-skriptistä
Etäisen Linux-järjestelmän maantieteellinen sijainti löytyy avoimista sovellusliittymistä ja yksinkertainen bash-skripti. Palvelimen geolokointi voisi auttaa sinua seuraamaan sitä fyysisessä maailmassa, mikä varmistaa, että palvelimet sijaitsevat alueellisissa hotspotissa.
Jokaisella Internet-palvelimella on julkinen IP-osoite. Tämä on joko suoraan palvelimelle tai osoitettu reitittimelle, joka lähettää liikennettä kyseiselle palvelimelle. IP-osoitteet antavat meille käsityksen siitä, missä palvelin sijaitsee maailmassa. Voimme saada nämä geolokointitiedot kahdella avoimella API: lla, jotka tarjoavat ipinfo.co ja IP Vigilante, ja käyttää sitä nähdäksesi kaupungin, valtion ja maan, joka liittyy palvelimeen tai muuhun etäjärjestelmään. Tämä ei anna sinulle tarkkaa GPS-sijaintia. se vain näyttää IP-osoitteen yleisen alueen.
Yhdistä etäjärjestelmään
Linux-palvelimella tai muilla etäyhteensopivilla järjestelmillä, joita haluat yhdistää, suoritetaan seuraavat komennot, joten sinun on muodostettava yhteys palvelimeen ja pääset ensin kuoreen päälle. Voit esimerkiksi muodostaa yhteyden SSH: n kautta. Voit käyttää paikallisen järjestelmän komentoja löytääksesi sen sijainnin, mutta luultavasti tiedät jo, missä olet!
Asenna curl ja jq
Tarvitsemme kaksi työkalua päästäksesi paikannusliittymän sovellusliittymään: kiemura
tehdä HTTP-pyyntöjä ja JQ
käsittelemään JSON-tietoja, joita saamme takaisin. Avaa pääte ja käytä apt-get
asentaa nämä työkalut Ubuntu- tai Debian-pohjaisiin järjestelmiin. Muissa Linux-jakeluissa käytä Linux-jakelun paketin asennustyökalua sen sijaan.
sudo apt-get install curl jq
Etsi palvelimen julkinen IP-osoite
Tarvitsemme myös palvelimen julkisen IP-osoitteen ennen kuin voimme saada paikannustiedot. Käyttää kiemura
tehdä API-puhelu ipinfo.io: lle pääteikkunassa.
curl https://ipinfo.io/ip
Hanki sijaintitiedot sovellusliittymästä
Nyt kun meillä on palvelimen julkinen IP, voimme soittaa ipvigilante.com: n API: han saadaksesi paikannustiedot. Korvata jossa on osoite, joka tuli takaisin edelliseen komentoon.
curl https://ipvigilante.com/
Tarkastellaan lähemmin sitä, mitä tietoja me palaamme tästä puhelusta:
API palauttaa kaupungin, maan ja mantereen, jossa palvelimemme sijaitsee. Se palauttaa myös likimääräiset leveys- ja pituuskoordinaatit, jos haluamme piirtää tämän palvelimen interaktiivisella kartalla. Käytämme "latitude", "longitude", "city_name" ja "country_name" käsikirjoituksissamme. JQ
komento ymmärtää API-tietojen käsittelyn ja poimii nämä neljä kenttää.
Komentosarjan luominen API-puhelun automatisoimiseksi
Voimme luoda komentosarjan, joka tarttuu paikannustietoihin ja kirjoittaa sen CSV-muodossa olevaan tiedostoon. Tiedot kirjoitetaan nimettyyn tiedostoon server_location.txt
vuonna / Tmp /
hakemistoon. Avaa suosikkieditori ja luo nimetty komentosarja geolocate.sh
. Aseta alla oleva skriptin sisältö ja vaihda IP-osoite omaan osoitteeseen:
#! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Tartu tämän palvelimen julkiseen IP-osoitteeseen PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Soita maantieteellisen paikannusliittymän sovellusliittymään ja tallenna tulosteen curl -s https : //ipvigilante.com/$ PUBLIC_IP | q '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | luki -r LATITUDE; lue -r LONGITUDE lukea -r CITY lukea -r COUNTRY echo "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | r - poista "> $ OUTPUT_FILE tehty
Tallenna skripti ja palaa päätteeseen. Tee komentosarja suoritettavaksi päätelaitteesta myöntämällä suorituksen lupa tähän tiedostoon.
chmod u + x geolocate.sh
Nyt olet valmis kokeilemaan sitä. Suorita geolocate.sh
skripti ja tarkista tulostustiedoston sisältö:
./geolocate.sh cat /tmp/server_location.txt
Geolokointitietojen päivittäminen kerran päivässä Cron Jobin avulla
Luodaan cron-työ, jotta palvelimemme voi päivittää sijaintinsa ja tallentaa sen tiedostoon kerran päivässä. Päivittäinen cron-työ päivittää tiedoston, jonka nimi on server_location.txt
vuonna / Tmp /
palvelimen kansion. 24 tunnin cron-työn luominen on yhtä helppoa kuin skriptiämme /etc/cron.daily
hakemistoon. Meidän on käytettävä sudo-komentoa kopioimaan tiedosto root-käyttäjänä, jotta vältetään lupakysymykset. Kopioi seuraava komento geolocate.sh
että /etc/cron.daily
hakemisto.
sudo cp geolocate.sh /etc/cron.daily
Nämä muutokset ovat välittömiä, ja käsikirjamme ajetaan 24 tunnin välein päivittämään /tmp/server_location.txt
tiedosto. Voimme käyttää näitä tietoja mielenkiintoisten asioiden tekemiseen, kuten esimerkiksi palvelimien kartoittamiseen karttaan ja geolokointia yhdistämällä liikennelokit, jotta voimme nähdä, missä maailmassa palvelimemme hotspotit ovat.