Página principal » cómo » Cómo obtener la ubicación geográfica de su sistema desde un script de Bash

    Cómo obtener la ubicación geográfica de su sistema desde un script de Bash

    Toria / Shutterstock.com

    Puede encontrar la ubicación geográfica de un sistema Linux remoto utilizando API abiertas y un simple script bash. Geolocalizar un servidor podría ayudarlo a rastrearlo en el mundo físico, asegurando que los servidores estén ubicados en puntos de acceso regionales..

    Cada servidor en Internet tiene una dirección IP pública. Esto se asigna directamente al servidor o se asigna a un enrutador que envía tráfico a ese servidor. Las direcciones IP nos dan una pista sobre dónde se encuentra ese servidor en el mundo. Podemos obtener estos datos de geolocalización a través de dos API abiertas, proporcionadas por ipinfo.co e IP Vigilante y usarlas para ver la ciudad, el estado y el país asociados con un servidor u otro sistema remoto. Esto no le da una ubicación GPS precisa; Simplemente te permite ver el área general de la dirección IP..

    Conectarse a un sistema remoto

    Ejecutará los siguientes comandos en el servidor Linux u otros sistemas remotos que desee geolocalizar, por lo que debe conectarse al servidor y acceder primero a un shell. Por ejemplo, puede conectarse a través de SSH. Puede ejecutar los comandos en su sistema local para encontrar su ubicación, pero probablemente ya sepa dónde se encuentra!

    Instalar rizo y jq

    Necesitamos dos herramientas para acceder a la API de geolocalización: rizo para hacer peticiones HTTP y  jq Para procesar los datos JSON que obtengamos. Abre una terminal y usa  apt-get para instalar estas herramientas en sistemas basados ​​en Ubuntu o Debian. En otras distribuciones de Linux, use la herramienta de instalación de paquetes de su distribución de Linux en su lugar.

    sudo apt-get install curl jq

    Encuentra la dirección IP pública del servidor

    También necesitamos la dirección IP pública del servidor antes de poder obtener los datos de geolocalización. Utilizar rizo para hacer una llamada de API a ipinfo.io en su ventana de terminal.

    curl https://ipinfo.io/ip

    Obtener datos de ubicación de la API

    Ahora que tenemos la IP pública del servidor, podemos hacer una llamada a la API de ipvigilante.com para obtener los datos de geolocalización. Reemplazar Con la dirección que regresó en el comando anterior..

    Curl https://ipvigilante.com/

    Echemos un vistazo más de cerca a los datos que obtenemos de esta llamada:

    La API devuelve la ciudad, el país y el continente en el que reside nuestro servidor. También devuelve las coordenadas de latitud y longitud aproximadas, en caso de que queramos dibujar este servidor en un mapa interactivo. Usaremos “latitude”, “longitude”, “city_name” y “country_name” en nuestro script. los  jq el comando entiende cómo procesar los datos de la API y extraer estos cuatro campos.

    Creación de un script para automatizar la llamada a la API

    Podemos crear un script que capture los datos de geolocalización y los escriba en un archivo en formato CSV. Los datos serán escritos en un archivo llamado. ubicación_sistema.txt en el / tmp / directorio. Abre tu editor favorito y crea un script llamado geolocalizar.sh . Inserte el contenido del script que se muestra a continuación y asegúrese de reemplazar la dirección IP con la suya:

    #! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Obtenga la dirección IP pública de este servidor PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Llame a la API de geolocalización y capture la curva de salida -s https : //ipvigilante.com/$ PUBLIC_IP | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | \ mientras lee -r LATITUD; lea -r LONGITUDE lea -r CIUDAD lea -r PAÍS repita "$ LATITUDE, $ LONGITUDA, $ CIUDAD, $ PAÍS" | \ tr --delete \ "> \ $ OUTPUT_FILE hecho 

    Guarde el script y vuelva a la terminal. Haga el script ejecutable desde el terminal, otorgando el permiso de ejecución en este archivo.

    chmod u + x geolocate.sh

    Ahora estás listo para probarlo. Ejecutar el geolocalizar.sh Guarde y compruebe el contenido del archivo de salida:

    ./geolocate.sh cat /tmp/server_location.txt 

    Actualización de los datos de geolocalización una vez al día con un trabajo cron

    Vamos a crear un trabajo cron para hacer que nuestro servidor actualice su geolocalización y guardarlo en un archivo una vez al día. El trabajo cron diario actualiza un archivo llamado ubicación_sistema.txt en el / tmp / Carpeta del servidor. Crear un trabajo cron de 24 horas es tan fácil como poner nuestro script en el /etc/cron.daily directorio. Debemos usar el comando sudo para copiar el archivo como usuario root, para evitar problemas de permisos. Ejecuta el siguiente comando para copiar geolocalizar.sh al /etc/cron.daily directorio.

    sudo cp geolocate.sh /etc/cron.daily

    Estos cambios son inmediatos, y nuestro script se ejecutará cada 24 horas para actualizar los contenidos de /tmp/server_location.txt expediente. Podemos usar estos datos para hacer cosas interesantes, como trazar nuestros servidores en un mapa y combinar la geolocalización con los registros de tráfico para ver en qué parte del mundo se encuentran nuestros puntos de acceso de servidores..