Kā iegūt sistēmas ģeogrāfisko atrašanās vietu no bash skripta
Tālvadības Linux sistēmas ģeogrāfisko atrašanās vietu var atrast, izmantojot atvērtas API un vienkāršu bash skriptu. Servera ģeolokācija var palīdzēt jums izsekot to fiziskajā pasaulē, nodrošinot, ka serveri atrodas reģionālajos punktos.
Katram interneta serverim ir publiska IP adrese. Tas ir tieši piešķirts serverim vai piešķirts maršrutētājam, kas nosūta trafiku uz šo serveri. IP adreses dod mums priekšstatu par to, kur šis serveris atrodas pasaulē. Mēs varam iegūt šos ģeolokācijas datus caur divām atvērtām API, ko nodrošina ipinfo.co un IP Vigilante, un izmantot to, lai redzētu pilsētu, valsti un valsti, kas saistīta ar serveri vai citu attālo sistēmu. Tas nenodrošina precīzu GPS atrašanās vietu; tas tikai ļauj jums redzēt vispārējo IP adreses apgabalu.
Savienojiet ar attālo sistēmu
Linux serverī vai citās tālvadības sistēmās, kuras vēlaties ģeogrāfiski izvietot, jūs darbosies šādas komandas, tāpēc jums vispirms ir jāizveido savienojums ar serveri un jāievada apvalks. Piemēram, jūs varat izveidot savienojumu, izmantojot SSH. Jūs varat palaist vietējās sistēmas komandas, lai atrastu tās atrašanās vietu, bet jūs, iespējams, jau zināt, kur atrodaties!
Instalējiet čokurošanās un jq
Lai piekļūtu ģeogrāfiskās atrašanās vietas API, ir nepieciešami divi rīki: čokurošanās
veikt HTTP pieprasījumus un jq
apstrādāt JSON datus, kurus mēs atgriežam. Atveriet termināli un izmantojiet apt-get
instalēt šos rīkus uz Ubuntu vai Debian sistēmām. Citos Linux izplatījumos izmantojiet savu Linux izplatīšanas pakotnes instalācijas rīku.
sudo apt-get install curl jq
Atrodiet servera publisko IP adresi
Mums ir nepieciešama arī servera publiskā IP adrese, pirms varam iegūt ģeogrāfiskās atrašanās vietas datus. Izmantot čokurošanās
veikt API zvanu uz ipinfo.io jūsu termināla logā.
čokurošanās https://ipinfo.io/ip
Iegūstiet atrašanās vietas datus no API
Tagad, kad mums ir publiskais IP serveris, mēs varam zvanīt uz ipvigilante.com API, lai iegūtu ģeogrāfiskās atrašanās vietas datus. Aizvietot ar adresi, kas atgriezās iepriekšējā komandā.
čokurošanās https://ipvigilante.com/
Apskatīsim tuvāk, kādus datus mēs saņemam no šī zvana:
API atgriež pilsētu, valsti un kontinentu, kurā atrodas mūsu serveris. Tā arī atgriež aptuvenās platuma un garuma koordinātas, ja mēs vēlamies izdarīt šo serveri interaktīvā kartē. Mūsu scenārijā izmantosim “platumu”, “garumu”, “pilsētas_nosaukumu” un “valsts_nosaukumu”. The jq
komanda saprot, kā apstrādāt API datus un izvilkt šos četrus laukus.
Skripta izveide, lai automatizētu API zvanu
Mēs varam izveidot skriptu, kas piesaista ģeogrāfiskās atrašanās vietas datus un ieraksta to failā CSV formātā. Dati tiks ierakstīti failā, ko sauc server_location.txt
iekš / tmp /
direktoriju. Atveriet savu iecienītāko redaktoru un izveidojiet nosaukumu geolocate.sh
. Ievietojiet zemāk redzamo skripta saturu un noteikti aizvietojiet IP adresi ar savu:
#! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Grab šī servera publiskā IP adrese PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Zvaniet ģeogrāfiskās atrašanās vietas API un uztveriet izejas līkumu -s https : //ipvigilante.com/$ PUBLIC_IP | jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | lasiet -r LATITUDE; lasīt -r LONGITUDE lasīt -r CITY lasīt -r COUNTRY atbalss "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | r - atcelt "> OUTPUT_FILE veikts
Saglabājiet skriptu un atgriezieties terminālī. Padariet skriptu izpildāmu no termināla, piešķirot izpildīšanas atļauju šai failam.
chmod u + x geolocate.sh
Tagad jūs esat gatavs to pārbaudīt. Palaidiet geolocate.sh
skriptu un pārbaudiet izejas faila saturu:
./geolocate.sh cat /tmp/server_location.txt
Geolokācijas datu atjaunināšana vienreiz dienā ar Cron darbu
Izveidosim cron darbu, lai mūsu serveris atjauninātu savu atrašanās vietu un saglabātu to failā vienu reizi dienā. Ikdienas cronu darba atjauninājumi atjaunina failu, ko sauc server_location.txt
iekš / tmp /
servera mapi. 24 stundu crona darba izveide ir tikpat vienkārša kā mūsu skripta ievietošana /etc/cron.daily
direktoriju. Lai izvairītos no atļaujām, mums ir jāizmanto sudo komanda, lai failu kopētu kā root lietotāju. Lai kopētu, izpildiet šādu komandu geolocate.sh
uz /etc/cron.daily
direktoriju.
sudo cp geolocate.sh /etc/cron.daily
Šīs izmaiņas ir tūlītējas, un mūsu skripts darbosies ik pēc 24 stundām, lai atjauninātu programmas saturu /tmp/server_location.txt
failu. Mēs varam izmantot šos datus, lai veiktu interesantas lietas, piemēram, uzzīmējot mūsu serverus kartē, kā arī apvienojot ģeogrāfisko atrašanās vietu ar satiksmes žurnāliem, lai redzētu, kur pasaulē ir mūsu serveru karstākie punkti..