GNU/Linux >> Linux Esercitazione >  >> Linux

Ottieni la posizione della città dagli indirizzi IP all'interno di un file

Usando un while read ciclo:

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

Questo leggerà l'ip_list.txt file e imposta ogni riga su ip variabile loop, quindi arricciala.

Sulla base del suggerimento di Stéphane ho aggiunto il --fail flag per curl in modo che fallisca silenziosamente su un errore del server e il || break in modo che esca dal giro. ipinfo.io consente 50.000 richieste API al mese per account gratuiti, quindi a seconda di quanti IP hai e della frequenza con cui prevedi di utilizzarlo, potrebbe essere un problema per te.


Per la ricerca di indirizzi IP geografici, di solito preferisco utilizzare il database geoIP di MaxMind. È più veloce, in quanto non dispone di una connessione Internet per ogni indirizzo IP, in quanto utilizza un database locale, e non ha limiti sul numero di chiamate.

Se in Debian, come prerequisito, installa i pacchetti:

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

Quindi esegui lo script:

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

Linux
  1. Non riesci a ottenere il codice di uscita corretto da uno script?

  2. Lettura di righe da un file con Bash:per vs. Mentre?

  3. Come ottenere il percorso del file corrente (pwd) in Linux da C?

  4. Ottieni una riga specifica dal file di testo usando solo lo script della shell

  5. Non bloccante Ottieni carattere

Scripting Bash:come leggere i dati dai file di testo

Come estrarre indirizzi e-mail da file di testo in Linux

Come ottenere il nome del file dal percorso completo in Linux

Come posso ottenere la lunghezza di un file video dalla console?

C'è un modo per ottenere la versione del BIOS da Linux?

Ottieni la dimensione totale dei file da un file contenente un elenco di file