GNU/Linux >> Belajar Linux >  >> Linux

Dapatkan lokasi kota dari alamat IP di dalam file

Menggunakan while read lingkaran:

while read -r ip; do curl --fail "ipinfo.io/${ip}/city" || break; done<ip_list.txt

Ini akan membaca ip_list.txt file dan setel setiap baris ke ip variabel loop, lalu gulung.

Berdasarkan saran Stéphane, saya telah menambahkan --fail tandai ke curl sehingga akan gagal secara diam-diam karena kesalahan server dan || break sehingga akan keluar dari loop. ipinfo.io memungkinkan permintaan 50k API per bulan untuk akun gratis jadi tergantung pada berapa banyak IP yang Anda miliki dan seberapa sering Anda berencana untuk menggunakan ini yang mungkin menjadi masalah bagi Anda.


Untuk pencarian alamat IP geografis, saya biasanya lebih suka menggunakan basis data geoIP MaxMind. Ini lebih cepat, karena tidak ada koneksi Internet untuk setiap alamat IP, karena menggunakan basis data lokal, dan tidak memiliki batasan jumlah panggilan.

Jika di Debian, sebagai prasyarat, instal paket:

sudo apt-get install geoip-bin geoip-database-extra

Kemudian jalankan skrip:

 while read -r ip; do geoiplookup $ip | awk -F, ' /City/  { print $5 } ' \
 ; done < ip_list.txt > cities.txt

Linux
  1. Membaca Baris Dari File Dengan Bash:Untuk Vs. Ketika?

  2. Bagaimana cara mendapatkan path ke file saat ini (pwd) di Linux dari C?

  3. Dapatkan baris tertentu dari file teks hanya dengan menggunakan skrip shell

  1. Shell Linux mendapatkan nilai bidang dari file yml

  2. Apakah mungkin membaca file teks di dalam file zip yang dilindungi kata sandi tanpa kata sandi?

  3. bash + baca variabel &nilai dari file dengan skrip bash

  1. Tidak Dapat Mendapatkan Kode Keluar yang Tepat Dari Script?

  2. Bagaimana Cara Membaca Variabel Dari File?

  3. Dapatkan ukuran file total dari file yang berisi daftar file