GNU/Linux >> Znalost Linux >  >> Linux

Získejte polohu města z IP adres v souboru

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

Linux
  1. Nedaří se vám získat správný výstupní kód ze skriptu?

  2. Jak se dostanu ke čtení ze standardního vstupu?

  3. Jak získat cestu k aktuálnímu souboru (pwd) v Linuxu z C?

  1. Linuxový shell získá hodnotu pole ze souboru yml

  2. Jak získat adresu URL souboru Dropbox z příkazového řádku?

  3. bash + čtení proměnných a hodnot ze souboru pomocí bash skriptu

  1. Čtení řádků ze souboru s Bash:For vs. Zatímco?

  2. Jak číst proměnnou ze souboru?

  3. Jak mohu získat binární soubor ze souboru .py