Pomocí while read
smyčka:
while read -r ip; do curl --fail "ipinfo.io/${ip}/city" || break; done<ip_list.txt
Tím se přečte ip_list.txt
a každý řádek nastavte na ip
proměnnou smyčky a poté ji zvlnit.
Na základě Stéphanova návrhu jsem přidal --fail
flag to curl, takže tiše selže při chybě serveru a || break
takže se vytrhne ze smyčky. ipinfo.io umožňuje 50 000 žádostí o API za měsíc pro bezplatné účty, takže v závislosti na tom, kolik IP máte a jak často je plánujete používat, to pro vás může být problém.
Pro vyhledávání geografických IP adres obvykle dávám přednost použití geoIP databáze MaxMind. Je rychlejší, protože nemá připojení k internetu pro každou IP adresu, protože používá místní databázi a nemá omezení na počet hovorů.
Pokud jste v Debianu, jako předpoklad nainstalujte balíčky:
sudo apt-get install geoip-bin geoip-database-extra
Poté spusťte skript:
while read -r ip; do geoiplookup $ip | awk -F, ' /City/ { print $5 } ' \
; done < ip_list.txt > cities.txt
Proč se připojení připojení souboru po odpojení nezdaří pomocí ENOENT?
Co může způsobit, že Linux na několik minut přestane reagovat při procházení určitých webových stránek?