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