Slik får du systemets geografiske plassering fra et Bash-script
Du kan finne den geografiske plasseringen til et eksternt Linux-system ved hjelp av åpne APIer og et enkelt bash-skript. Geolocating en server kan hjelpe deg med å spore den i den fysiske verden, slik at servere befinner seg i regionale hotspots.
Hver server på Internett har en IP-adresse som er åpen for publikum. Dette er enten direkte tilordnet serveren eller tildelt en ruter som sender trafikk til den serveren. IP-adresser gir oss en anelse om hvor den serveren befinner seg i verden. Vi kan få disse geolokasjonsdataene gjennom to åpne APIer, levert av ipinfo.co og IP Vigilante, og bruk den til å se byen, staten og landet som er tilknyttet en server eller et annet eksternt system. Dette gir deg ikke en presis GPS-plassering; det lar deg bare se det generelle området av IP-adressen.
Koble til et eksternt system
Du kjører følgende kommandoer på Linux-serveren eller andre eksterne systemer du vil geolocate, så du må koble til serveren og få tilgang til et skall på det først. For eksempel kan du koble til via SSH. Du kan kjøre kommandoene på ditt lokale system for å finne beliggenheten, men du vet sannsynligvis allerede hvor du er!
Installer krøll og jq
Vi trenger to verktøy for å få tilgang til geolocation API: curl
å lage HTTP-forespørsler og Jq
å behandle JSON-dataene som vi kommer tilbake. Åpne en terminal og bruk apt-get
å installere disse verktøyene på Ubuntu eller Debian-baserte systemer. På andre Linux-distribusjoner, bruk Linux-distribusjonens pakkeinstallasjonsverktøy i stedet.
sudo apt-get install krøll jq
Finn serverens offentlige IP-adresse
Vi trenger også serverens offentlige IP-adresse før vi kan få geolokaliseringsdataene. Bruk curl
å lage en API-samtale til ipinfo.io i terminalvinduet.
krølle https://ipinfo.io/ip
Få plasseringsdata fra APIen
Nå som vi har den offentlige IP-serveren, kan vi ringe til ipvigilante.com API for å få geolokaliseringsdataene. Erstatte med adressen som kom tilbake i forrige kommando.
krølle https://ipvigilante.com/
La oss se nærmere på hvilke data vi kommer tilbake fra denne anropet:
API-en returnerer byen, landet og kontinentet, der serveren vår ligger. Den returnerer også omtrentlige breddegrad og lengdegradskoordinater, hvis vi ønsker å tegne denne serveren på et interaktivt kart. Vi bruker "breddegrad", "lengdegrad", "bynavn" og "landnavn" i skriptet vårt. De Jq
kommandoen forstår hvordan man behandler API-dataene og trekker ut disse fire feltene.
Opprette et script for å automatisere API-anropet
Vi kan lage et skript som tar tak i geolokasjonsdataene og skriver det til en fil i CSV-format. Dataene vil bli skrevet til en fil som heter server_location.txt
i / Tmp /
katalogen. Åpne favorittredigeren din og opprett et skript som heter geolocate.sh
. Sett inn innholdet på skriptet nedenfor, og vær sikker på at du erstatter IP-adressen med din egen:
#! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Ta tak i denne serverens offentlige IP-adresse PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Ring til geolocation API og fange utgangskrulene -s https : //ipvigilante.com/$ PUBLIC_IP | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | \ mens du leser -r LATITUDE; les -r LONGITUDE read -r CITY leser -r COUNTRY echo "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | \ tr --delete \ "> \ $ OUTPUT_FILE ferdig
Lagre skriptet og gå tilbake til terminalen. Gjør skriptet kjørbart fra terminalen, ved å gi utføringsrettigheten til denne filen.
chmod u + x geolocate.sh
Nå er du klar til å teste den ut. Kjør geolocate.sh
skript og kontroller innholdet i utdatafilen:
./geolocate.sh cat /tmp/server_location.txt
Oppdaterer Geolocation Data en gang om dagen med en Cron-jobb
La oss lage en cron-jobb for å gjøre serveren vår oppdatering sin geolokasjon og lagre den til en fil en gang om dagen. Den daglige cron-jobben oppdaterer en fil som heter server_location.txt
i / Tmp /
mappe på serveren. Å lage en 24-timers cronjobb er like enkelt som å sette vårt skript inn i /etc/cron.daily
katalogen. Vi må bruke sudo-kommandoen for å kopiere filen som rotbruker, for å unngå tillatelsesproblemer. Kjør følgende kommando for å kopiere geolocate.sh
til /etc/cron.daily
katalog.
sudo cp geolocate.sh /etc/cron.daily
Disse endringene er umiddelbare, og vårt skript vil løpe hver 24. time for å oppdatere innholdet i /tmp/server_location.txt
fil. Vi kan bruke disse dataene til å gjøre interessante ting, for eksempel å plotte våre servere på et kart, samt å kombinere geolokasjon med trafikklogger for å se hvor i verden våre server-hotspots er.