Linux'ta Bash'de IP Adresinin Coğrafi Konum bilgisini alın
Bazen bir IP adresi için coğrafi konum bilgilerini hızlı bir şekilde almanız gerekir. Linux'ta zamandan tasarruf etmek ve bu bilgileri hızlı bir şekilde almak için konsol uygulamalarının gücünü kullanabilirsiniz. Nasıl yapılabileceğini görelim.
Reklamcılık
Belirli bir IP adresi hakkında coğrafi konum bilgilerini elde etmek için uygun API'yi sağlayan bazı çevrimiçi hizmetleri kullanmanız gerekir. Yetkilendirme prosedüründen ve API anahtar yönetiminden kaçınmak için bazı kamu hizmetlerini kullanmak iyi bir fikirdir. Böyle bir hizmet FreeGeoIP.net.
IP adreslerinin coğrafi konumunu aramak için genel bir HTTP API'si sağlar. Saat dilimi, enlem ve boylam gibi diğer ilgili bilgilerle birlikte şehirlerle ilişkili bir IP adresi veritabanı kullanır. Bu çok faydalı.
Hizmet, arama sonuçlarını JSON veya XML olarak sağlayabilir. Yani, curl ile bir JSON ayrıştırıcısını birleştirirsek, gerekli bilgiyi elde edebiliriz.
En sevdiğim JSON ayrıştırıcısını kullanacağım, jq:
Çok hafif ve hızlıdır.
Bizim durumumuz için sorgu aşağıdaki gibi olmalıdır:
http://freegeoip.net/json/119.94.116.145
Buradaki "json" kısmı istenen veri formatıdır. JSON'un yanı sıra XML veya CSV olabilir.
Sorguyu curl ile çalıştıralım ve çıktıyı görelim:
Sonuç, okunması zor olan ham JSON çıktısıdır. Sonuç kümesinin görünümünü iyileştirmek için jq aracını kullanalım. Aşağıdaki gibi curl ile birleştirin:
kıvrılmak http://freegeoip.net/json/119.94.116.145|jq
Çıktının okunması daha kolay olacaktır:
jq kullanarak çıktıyı filtreleyebilir ve yalnızca gerekli alanları göstermesini sağlayabilirsiniz. Aşağıdaki komut yalnızca ülke adını, enlem ve boylamı gösterecektir:
kıvrılmak http://freegeoip.net/json/119.94.116.145|jq -r '.ülke_adı,.enlem,.boylam'
Bu komutu aşağıdaki kabuk betiği olarak kaydedebilirsiniz:
#!/bin/sh. kıvırmak -s http://freegeoip.net/json/$1|jq -r '.ülke_adı,.enlem,.boylam'
Bir dahaki sefere coğrafi konum bilgisi almanız gerektiğinde, komut dosyanızı şu şekilde çalıştırabilirsiniz:
./geo.sh IP_adresi
Bu kadar.