Få geolokaliseringsinformasjon om IP-adresse i Bash i Linux
Noen ganger må du raskt få geolokasjonsinformasjon for en IP-adresse. I Linux kan du bruke kraften til konsollapper for å spare tid og hente denne informasjonen raskt. La oss se hvordan det kan gjøres.
Annonse
For å få informasjon om geografisk plassering om en spesifikk IP-adresse, må du bruke en nettjeneste som gir riktig API. Det er en god idé å bruke noen offentlige tjenester for å unngå autorisasjonsprosedyren og API-nøkkeladministrasjonen. En slik tjeneste er FreeGeoIP.net.
Den gir en offentlig HTTP API for å søke etter geolokalisering av IP-adresser. Den bruker en database med IP-adresser som er knyttet til byer sammen med annen relevant informasjon som tidssone, breddegrad og lengdegrad. Dette er veldig nyttig.
Tjenesten kan gi søkeresultater som JSON eller XML. Så hvis vi kombinerer curl med en JSON-parser, kan vi få den nødvendige informasjonen.
Jeg vil bruke min favoritt JSON-parser, jq:
Den er veldig lett og rask.
For vårt tilfelle bør spørringen være som følger:
http://freegeoip.net/json/119.94.116.145
"Json"-delen her er det ønskede dataformatet. Foruten JSON kan det være XML eller CSV.
La oss kjøre spørringen med curl og se utdataene:
Resultatet er rå JSON-utdata som er vanskelig å lese. For å forbedre utseendet til resultatsettet, la oss bruke jq-verktøyet. Kombiner den med krøll på følgende måte:
krølle http://freegeoip.net/json/119.94.116.145|jq
Utdataene vil være lettere å lese:
Ved å bruke jq kan du filtrere utdataene og få det til å vise bare de nødvendige feltene. Følgende kommando viser kun landets navn, breddegrad og lengdegrad:
krølle http://freegeoip.net/json/119.94.116.145|jq -r '.landnavn,.breddegrad,.lengdegrad'
Du kan lagre denne kommandoen som følgende skallskript:
#!/bin/sh. krøller http://freegeoip.net/json/$1|jq -r '.landnavn,.breddegrad,.lengdegrad'
Neste gang du trenger å få informasjon om geolokalisering, kan du kjøre skriptet ditt slik:
./geo.sh IP-adresse
Det er det.