Ibland behöver du snabbt få information om geolokalisering för en IP-adress. I Linux kan du använda kraften i konsolappar för att spara tid och hämta denna information snabbt. Låt oss se hur det kan göras.
Annons
För att få information om geografisk plats om en specifik IP-adress måste du använda någon onlinetjänst som tillhandahåller lämpligt API. Det är en bra idé att använda någon offentlig tjänst för att undvika auktoriseringsproceduren och API-nyckelhantering. En sådan tjänst är FreeGeoIP.net.
Det ger ett offentligt HTTP API för att söka i geolokalisering av IP-adresser. Den använder en databas med IP-adresser som är associerade med städer tillsammans med annan relevant information som tidszon, latitud och longitud. Detta är mycket användbart.
Tjänsten kan tillhandahålla sökresultat som JSON eller XML. Så om vi kombinerar curl med någon JSON-parser kan vi få den information som krävs.
kan vi spela spel på Nintendo Switch
Jag kommer att använda min favorit JSON-parser, jq:
Den är väldigt lätt och snabb.
För vårt fall bör frågan vara som följer:
http://freegeoip.net/json/119.94.116.145
'Json'-delen här är önskat dataformat. Förutom JSON kan det vara XML eller CSV.
Låt oss köra frågan med curl och se utdata:
Resultatet är rå JSON-utdata som är svåra att läsa. För att förbättra utseendet på resultatuppsättningen, låt oss använda jq-verktyget. Kombinera den med curl enligt följande:
curl http://freegeoip.net/json/119.94.116.145|jq
Resultatet blir lättare att läsa:
Med jq kan du filtrera utdata och få den att endast visa de obligatoriska fälten. Följande kommando visar endast landets namn, latitud och longitud:
curl http://freegeoip.net/json/119.94.116.145|jq -r '.country_name, .latitude, .longitude'
Du kan spara det här kommandot som följande skalskript:
#! / bin / sh curl -s http://freegeoip.net/json/|jq -r '.country_name, .latitude, .longitude'
Nästa gång du behöver få information om geolokalisering kan du köra ditt skript så här:
./geo.sh IP_adress
Det är allt.