GNU/Linux >> Tutoriales Linux >  >> Linux

Obtenga la ubicación de la ciudad a partir de direcciones IP dentro de un archivo

Usando un while read bucle:

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

Esto leerá el ip_list.txt archivo y establezca cada línea en el ip variable de bucle, luego enróllela.

Basado en la sugerencia de Stéphane, he agregado el --fail marca para curl por lo que fallará en silencio ante un error del servidor y el || break para que salga del bucle. ipinfo.io permite 50 000 solicitudes de API al mes para cuentas gratuitas, por lo que, según la cantidad de direcciones IP que tenga y la frecuencia con la que planee usarlas, puede ser un problema para usted.


Para la búsqueda de direcciones IP geográficas, generalmente prefiero usar la base de datos geoIP de MaxMind. Es más rápido, ya que no tiene una conexión a Internet para cada dirección IP, ya que utiliza una base de datos local y no tiene límites en la cantidad de llamadas.

Si está en Debian, como requisito previo, instale los paquetes:

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

Luego ejecute el script:

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

Linux
  1. ¿No puede obtener el código de salida correcto de un script?

  2. ¿Cómo leer una variable de un archivo?

  3. ¿Cómo hago para que sed lea desde la entrada estándar?

  4. ¿Cómo obtener la ruta al archivo actual (pwd) en Linux desde C?

  5. Obtenga una línea específica del archivo de texto usando solo un script de shell

Bash scripting:cómo leer datos de archivos de texto

Cómo extraer direcciones de correo electrónico de un archivo de texto en Linux

Cómo obtener el nombre de archivo de la ruta completa en Linux

Lectura de líneas de un archivo con Bash:para vs. ¿Mientras?

Obtener carácter sin bloqueo

¿Cómo puedo obtener la duración de un archivo de video desde la consola?