Pagina inicial » como » Como obter o local geográfico do seu sistema a partir de um script Bash

    Como obter o local geográfico do seu sistema a partir de um script Bash

    Toria / Shutterstock.com

    Você pode encontrar a localização geográfica de um sistema Linux remoto usando APIs abertas e um script bash simples. Geolocalização de um servidor pode ajudá-lo a rastreá-lo no mundo físico, garantindo que os servidores estejam localizados em pontos de acesso regionais.

    Cada servidor na internet tem um endereço IP voltado para o público. Isso é atribuído diretamente ao servidor ou atribuído a um roteador que envia tráfego para esse servidor. Endereços IP nos dão uma pista sobre onde esse servidor está localizado no mundo. Podemos obter esses dados de geolocalização por meio de duas APIs abertas, fornecidas pelo ipinfo.co e pelo IP Vigilante, e usá-las para ver a cidade, o estado e o país associados a um servidor ou outro sistema remoto. Isso não lhe dá uma localização precisa no GPS; apenas permite ver a área geral do endereço IP.

    Conecte-se a um sistema remoto

    Você estará executando os seguintes comandos no servidor Linux ou em outros sistemas remotos que você deseja geolocalizar, portanto, você deve se conectar ao servidor e acessar um shell nele primeiro. Por exemplo, você pode se conectar via SSH. Você pode executar os comandos em seu sistema local para encontrar sua localização, mas provavelmente já sabe onde está!

    Instalar curl e jq

    Precisamos de duas ferramentas para acessar a API de geolocalização: ondulação para fazer solicitações HTTP e  jq para processar os dados JSON que recebemos. Abra um terminal e use  apt-get para instalar essas ferramentas no Ubuntu ou em sistemas baseados em Debian. Em outras distribuições Linux, use a ferramenta de instalação de pacotes da sua distribuição Linux.

    sudo apt-get instalar curl jq

    Encontrar o endereço IP público do servidor

    Também precisamos do endereço IP público do servidor antes de podermos obter os dados de geolocalização. Usar ondulação fazer uma chamada de API para ipinfo.io na sua janela de terminal.

    enrolar https://ipinfo.io/ip

    Obter dados de localização da API

    Agora que temos o IP público do servidor, podemos fazer uma chamada para a API do ipvigilante.com para obter os dados de geolocalização. Substituir com o endereço que voltou no comando anterior.

    enrolar https://ipvigilante.com/

    Vamos dar uma olhada mais de perto nos dados que recebemos desta chamada:

    A API retorna a cidade, o país e o continente em que nosso servidor reside. Ele também retorna as coordenadas aproximadas de latitude e longitude, caso desejemos desenhar esse servidor em um mapa interativo. Usaremos "latitude", "longitude", "city_name" e "country_name" em nosso script. o  jq comando entende como processar os dados da API e extrair esses quatro campos.

    Criando um script para automatizar a chamada da API

    Podemos criar um script que pegue os dados de geolocalização e os grave em um arquivo no formato CSV. Os dados serão gravados em um arquivo chamado server_location.txt no / tmp / diretório. Abra seu editor favorito e crie um script chamado geolocate.sh . Insira o conteúdo do script mostrado abaixo e certifique-se de substituir o endereço IP pelo seu:

    #! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Pegue o endereço IP público do servidor PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Chame a API de geolocalização e capture a saída curl -s https : //ipvigilante.com/$ PUBLIC_IP | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | \ while leia -r LATITUDE; leia -r LONGITUDE leia -r CITY leitura -r COUNTRY echo "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | \ tr --delete \ "> \ $ OUTPUT_FILE concluído 

    Salve o script e volte para o terminal. Tornar o script executável a partir do terminal, concedendo a permissão de execução neste arquivo.

    chmod u + x geolocate.sh

    Agora você está pronto para testá-lo. Execute o geolocate.sh script e verifique o conteúdo do arquivo de saída:

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

    Atualizando os dados de geolocalização uma vez por dia com um trabalho Cron

    Vamos criar uma tarefa cron para fazer com que o nosso servidor atualize sua localização geográfica e salve-a em um arquivo uma vez por dia. O trabalho cron diário atualiza um arquivo chamado server_location.txt no / tmp / pasta do servidor. Criar um cron job de 24 horas é tão fácil quanto colocar nosso script no /etc/cron.daily diretório. Devemos usar o comando sudo para copiar o arquivo como usuário root, para evitar problemas de permissão. Execute o seguinte comando para copiar geolocate.sh ao /etc/cron.daily diretório.

    sudo cp geolocate.sh /etc/cron.daily

    Essas alterações são imediatas e nosso script será executado a cada 24 horas para atualizar o conteúdo do /tmp/server_location.txt Arquivo. Podemos usar esses dados para fazer coisas interessantes, como traçar nossos servidores em um mapa, além de combinar a geolocalização com os registros de tráfego para ver onde no mundo estão os pontos de acesso do nosso servidor..