Kadang kala anda perlu mendapatkan maklumat geolokasi untuk alamat IP dengan cepat. Di Linux, anda boleh menggunakan kekuatan aplikasi konsol untuk menjimatkan masa anda dan mendapatkan maklumat ini dengan cepat. Mari lihat bagaimana ia dapat dilakukan.
Iklan
Untuk mendapatkan maklumat lokasi geo mengenai alamat IP tertentu, anda perlu menggunakan beberapa perkhidmatan dalam talian yang menyediakan API yang sesuai. Adalah idea yang baik untuk menggunakan beberapa perkhidmatan awam untuk mengelakkan prosedur kebenaran dan pengurusan kunci API. Salah satu perkhidmatan tersebut adalah FreeGeoIP.net.
Ini menyediakan HTTP API awam untuk mencari geolokasi alamat IP. Ia menggunakan pangkalan data alamat IP yang berkaitan dengan bandar berserta maklumat lain yang relevan seperti zon waktu, garis lintang dan garis bujur. Ini sangat berguna.
Perkhidmatan ini dapat memberikan hasil carian sebagai JSON atau XML. Oleh itu, jika kita menggabungkan curl dengan beberapa pengurai JSON, kita boleh mendapatkan maklumat yang diperlukan.
bagaimana untuk mengetahui sama ada kad video anda rosak
Saya akan menggunakan penghurai JSON kegemaran saya, jq:
Ia sangat ringan dan pantas.
Untuk kes kami, pertanyaan harus seperti berikut:
http://freegeoip.net/json/119.94.116.145
Bahagian 'json' di sini adalah format data yang diinginkan. Selain JSON, ia boleh menjadi XML atau CSV.
Mari jalankan pertanyaan dengan curl dan lihat hasilnya:
Hasilnya adalah output JSON mentah yang sukar dibaca. Untuk memperbaiki penampilan set hasil, mari gunakan alat jq. Gabungkan dengan keriting seperti berikut:
curl http://freegeoip.net/json/119.94.116.145|jq
Hasilnya akan lebih mudah dibaca:
Dengan menggunakan jq, anda boleh menapis output dan membuatnya hanya menunjukkan medan yang diperlukan. Perintah berikut hanya akan memaparkan nama negara, garis lintang dan garis bujur:
curl http://freegeoip.net/json/119.94.116.145|jq -r '.country_name, .latitude, .longitude'
Anda boleh menyimpan perintah ini sebagai skrip shell berikut:
#! / bin / sh curl -s http://freegeoip.net/json/|jq -r '.country_name, .latitude, .longitude'
Kali berikutnya anda perlu mendapatkan maklumat geolokasi, anda boleh melaksanakan skrip anda seperti ini:
./geo.sh IP_address
Itu sahaja.