Om de geolocatie-informatie over een specifiek IP-adres te verkrijgen, moet u een online service gebruiken die de juiste API biedt. Het is een goed idee om gebruik te maken van een openbare dienst om de autorisatieprocedure en het API-sleutelbeheer te vermijden. Eén zo'n dienst is FreeGeoIP.net.
Het biedt een openbare HTTP API om de geolocatie van IP-adressen te doorzoeken. Het maakt gebruik van een database met IP-adressen die aan steden zijn gekoppeld, samen met andere relevante informatie zoals tijdzone, breedte- en lengtegraad. Dit is erg handig.
De dienst kan zoekresultaten leveren als JSON of XML. Dus als we curl combineren met een JSON-parser, kunnen we de vereiste informatie verkrijgen.
Ik zal mijn favoriete JSON-parser gebruiken, jq:
Het is zeer lichtgewicht en snel.
Voor ons geval zou de vraag als volgt moeten zijn:
|_+_|Het 'json'-gedeelte hier is het gewenste gegevensformaat. Naast JSON kan dit XML of CSV zijn.
Laten we de query uitvoeren met curl en de uitvoer bekijken:
Het resultaat is onbewerkte JSON-uitvoer die moeilijk te lezen is. Laten we de jq-tool gebruiken om het uiterlijk van de resultatenset te verbeteren. Combineer het met krul als volgt:
|_+_|De uitvoer zal gemakkelijker te lezen zijn:
Met jq kunt u de uitvoer filteren en ervoor zorgen dat alleen de vereiste velden worden weergegeven. Met het volgende commando worden alleen de landnaam, breedtegraad en lengtegraad weergegeven:
|_+_|U kunt deze opdracht opslaan als het volgende shellscript:
|_+_|De volgende keer dat u geolocatie-informatie nodig heeft, kunt u uw script als volgt uitvoeren:
|_+_|Dat is het.