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