Script Bash para monitorar um ou vários sites e verificar se estão online

Este pequeno script em Bash, vai monitorar uma lista de sites, à sua escolha e vai avisar se algum deles não estiver online, em algum momento.
Como ele usa o comando ping, você também pode executá-lo dentro da sua rede local para monitorar diversos nós e ficar sabendo quando um for desligado.
Veja o código abaixo:


#!/bin/bash
# Um script feito para sistemas Linux e UNIX
# que faz monitoramento com o comando PING.

# adicione endereços IP ou hostnames, 
# separados por espaços em branco, para serem
# monitorados pelo script.
HOSTS="127.0.0.1 192.168.1.0 192.168.0.133 google.com"

# sem ping request
CONTADOR=1

# envia relatório de email quando...
ASSUNTO="Ping falhou"
EMAIL="elias@praciano.com"
for meuhost in $HOSTS
do
    contador=$(ping -v -c $CONTADOR $meuhost | grep 'received' | awk -F',' '{print $2}' | awk '{print $1}')
    if [ $contador -eq 0 ]; then
        echo "O Host: $meuhost está fora do ar (o ping falhou) em $(date) - $ASSUNTO - $EMAIL"
        # se você preferir receber um e-mail, descomente a linha abaixo
        echo "Host : $meuhost  ${NAME[$val]} está fora do ar (o ping falhou) em $(date)" | mail -s "$ASSUNTO" $EMAIL
    fi
done

O código pode funcionar melhor dentro de outro script ou sendo executado periodicamente, dentro do crontab do seu sistema.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Referências

https://bash.cyberciti.biz/monitoring/monitor-windows-linux-server-with-ping-script/.

Combine os comandos PING e TRACEROUTE no Linux, usando o MTR

O mtr é uma ferramenta de diagnóstico da rede que combina as funcionalidades dos comandos ping e traceroute.
Ao iniciar, o mtr investiga a conexão de rede entre o computador local, em que ele está sendo executado (host) e o outro, indicado pelo usuário (hostname) — enviando pacotes com TTLs propositadamente baixos. Ele envia os pacotes continuamente e registra os tempos de resposta dos roteadores intervenientes. community_symbol_2
Isto permite exibir os percentuais e tempos de respostas da rota, via Internet, até o destino.
Um repentino aumento na quantidade de pacotes perdidos ou no tempo de resposta é um indicador de que há um link ruim ou apenas sobrecarregado na rota.
O mtr trabalha enviando pacotes ICMP e incrementa o valor do TTL até encontrar uma rota entre a fonte (onde ele é executado) e o destino.
O significado de MTR é My TraceRoute, ou meu traceroute.
Ao combinar o uso do ping com o traceroute, se torna uma ferramenta poderosa para diagnosticar a sua rede.
A ferramenta permite ao administrador diagnosticar e isolar erros na rede e, ao mesmo tempo, oferece relatórios úteis sobre o estado da rede.
Vou explicar, através de exemplos, como instalar e usar o comando mtr, ao longo deste artigo.

como instalar o mtr

No ubuntu 14.04, o mtr-tiny já vem instalado e responde por mtr. Este pacote não tem o aplicativo que roda no modo gráfico.
Portanto, se você instalar o mtr, através do apt-get, ele irá remover o mtr-tiny:

sudo apt-get install mtr

A saída do comando mostra o que será feito:

Lendo listas de pacotes... Pronto
Construindo árvore de dependências       
Lendo informação de estado... Pronto
Os pacotes a seguir serão REMOVIDOS:
  mtr-tiny
Os NOVOS pacotes a seguir serão instalados:
  mtr
0 pacotes atualizados, 1 pacotes novos instalados, 1 a serem removidos e 8 não atualizados.
É preciso baixar 58,4 kB de arquivos.
Depois desta operação, 39,9 kB adicionais de espaço em disco serão usados.
Você quer continuar? [S/n]

Usuários do CentOS e Fedora podem usar o yum:

sudo yum install mtr

feat rede network-gray

como usar o mtr

O aplicativo funciona em modo gráfico e em modo texto. O padrão é o modo gráfico.
Você pode fazer a experiência, com o seguinte comando:

mtr --curses nerdices.com.br

Este comando irá executar o aplicativo no modo texto, como você pode ver na imagem, abaixo:

mtr ping traceroute diagnósitco de rede
Clique para ampliar

Para interromper a execução, tecle q.
Para rodar a ferramenta em modo gráfico (padrão), o comando é mais simples:

mtr nerdices.com.br

rede mtr ping traceroute linux
Clique para ampliar

O mtr irá rodar em modo contínuo e interativo — até você o interromper.

Execute o mtr em Report Mode

Se você preferir, pode obter um resultado instantâneo do aplicativo.
Em vez de usar o modo interativo, use o modo de relatório com a opção --report.
Neste modo, o programa roda dentro de 10 ciclos e finaliza, exibindo um relatório útil para determinar a qualidade da sua rede. Veja:

mtr --no-dns --report google.com.br

Eu obtive o resultado abaixo:

Start: Wed Apr 23 14:14:32 2014
HOST: Voyager                     Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 192.168.254.254            0.0%    10    1.5   1.8   1.2   2.8   0.0
  2.|-- 200.217.255.248            0.0%    10   49.7  37.5  22.6  64.0  13.4
  3.|-- 200.164.40.95              0.0%    10   46.1  51.0  22.4  79.8  18.0
  4.|-- 200.223.131.78             0.0%    10   68.4  87.3  68.4 115.0  14.0
  5.|-- 200.199.54.180             0.0%    10   80.5  85.0  65.6 130.0  18.4
  6.|-- 72.14.195.126             10.0%    10   83.9  83.9  69.4  95.9   9.7
  7.|-- 209.85.254.136             0.0%    10  108.4 116.7 108.4 126.3   6.2
  8.|-- 209.85.245.229             0.0%    10   88.2  78.3  68.1  88.2   7.5
  9.|-- 173.194.118.87             0.0%    10   79.7  77.9  68.2  92.1   9.1

No exemplo, acima, o mtr rodou por 10 ciclos, recolheu as informações e as exibiu antes de finalizar.
Você pode alterar a quantidade de ciclos, com a opção -c.

Entenda a saída do comando mtr

Segue o significado de cada coluna no relatório visto:

  • Loss% — mostra a perda, em percentual, dos pacotes, a cada ciclo
  • Snt — exibe o número de pacotes enviados (sent)
  • Last — latência do último (last) pacote enviado
  • Avg — latência média (average) de todos os pacotes
  • Best — mostra o tempo de viagem (Round Trip Time) mais curto da origem ao destino
  • Wrst — mostra o pior tempo de viagem da origem ao destino (worst RTT)
  • StDev — provê o desvio padrão (Standard Deviation) das latências para cada host

Uma boa dica, aqui, é prestar atenção no StDev, mesmo que o Avg pareça bom.
Os indicadores, como qualquer estatística, só funcionam se estiverem “entrelaçados”.
Um StDev alto é indício de que o Avg está distorcido por alguns erros de medição ou por excesso de flutuação. Neste caso, observe as colunas Best e Wrst para se certificar de que a média está boa.

Conclusão

O manual do comando alerta para o fato de que alguns roteadores dão baixa prioridade a pacotes ICMP ECHO, em favor de outros tipos de tráfego na rede.
A consequência disto é que a confiabilidade dos resultados provenientes destes roteadores pode ser comprometida.
Você pode obter maiores informações na página oficial do aplicativo em http://www.bitwizard.nl/mtr/ ou na página do manual:

man mtr

Compartilhe! 😉

Use o fping para scanear a sua rede

O fping é um utilitário usado para scanear e encontrar as máquinas conectadas e ligadas em uma rede. Semelhante ao ping, usa o protocolo ICMP (Internet Control Message Protocol) para determinar se um host está “de pé” — através de uma requisição echo — ou não.
buscas na rede - fping
Diferente do ping, é possível fornecer vários endereços de hosts em uma só linha de comando ou um arquivo texto, com uma lista de hosts para sondar.
O fping envia um pacote ping para cada host da lista. Os que respondem são marcados na lista como ativos e não são mais checados. Os que não respondem, após um determinado período, são marcados como inalcançáveis.

fping versão 3

A quem já conhece a teoria ou não tem interesse em conhecer, recomendo pular este (ainda que) breve tópico. 😉
Após um longo tempo sem atualizações da versão original – entre 2002 e 2011 – em que, até mesmo, havia propostas de correções e melhorias e sem respostas do mantenedor oficial, David Schweikert assumiu o projeto e tem disponibilizado versões atualizadas do programa, junto com a documentação em seu site – de onde eu sugiro que você faça o seu download.

Por que usar o fping

O ping foi desenvolvido em 1983 por Mike Muuss e é uma ferramenta eficiente para testar quando um host é alcançável ou não, dentro da rede.
O problema com o ping é que ele envia uma requisição echo e fica esperando pela resposta. Imagine ter que testar um segmento da rede com 255 possíveis hosts – sendo que alguns, mesmo online, demoram, pelos mais variados motivos, algum tempo extra para responder ao ping?
Pois bem, o fping resolve isto. Como já vimos, se a resposta demora a chegar, ele segue em frente.

Como instalar o fping

Se você preferir compilar o código fonte, para usar uma versão mais atual ou específica do fping, passe para o próximo tópico.
No final do artigo, há o link para fazer download do aplicativo – para qualquer sistema operacional. Quem usa Debian ou Ubuntu pode instalar o fping com o comando apt-get:

sudo apt-get install fping

Usuários Debian, ainda podem verificar nos backports por uma versão mais atual em relação ao repositório padrão.
No Fedora ou outras distribuições baseadas no Red Hat, use o yum:

yum install fping

Como compilar o código fonte do fping

Baixar e compilar o código fonte pode trazer uma série de vantagens e costuma ser mais fácil do que algumas pessoas imaginam.
Se você optar por este método de instalação, faça o download do código fonte na página http://fping.org/dist/.
Execute os próximos passos, com privilégios administrativos:

./configure 
make
make check
make install
make clean
make distclean

… e pronto!
Se você ainda tiver dúvidas sobre como compilar código fonte no Linux, leia o artigo Como compilar código fonte.
O processo padrão, descrito acima, vai instalar o fping no diretório
/usr/local/sbin/fping.
Você pode usar o comando whereis, para obter esta informação:

whereis fping
fping: /usr/local/sbin/fping

Estar neste diretório, indica que o fping necessitará de privilégios administrativos para ser executado.

Como usar o fping para sondar e scanear a rede

O bom senso diz que devemos tomar alguns cuidados antes de fazer varreduras na rede. Uma vez que os sistemas de segurança podem identificar a atitude como agressiva, convém pedir permissão ao administrador da rede antes de iniciar esta atividade.
Veja um exemplo de aplicação do fping, com resultado:

fping 192.168.1.1
192.168.1.1 is alive

com este exemplo, fica claro que a resposta is alive (“está vivo”) significa que o host está de pé e pôde ser alcançado.
A brincadeira fica mais interessante, quando você fizer a busca baseada em uma lista, que pode ter centenas ou mais endereços IP de máquinas na sua rede. Imagine o arquivo lista_de_ips.txt, com o seguinte conteúdo:

192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5

Nota: Adeque os valores acima à realidade da sua rede.
Feito isto, vamos jogar esta lista pro fping testar cada IP:

fping -a < lista_de_ips.txt

Se tiver privilégios administrativos na sua máquina, use fping -f, assim:

sudo fping -f lista_de_ips.txt

Em um rápido resumo, até aqui:

  • Quando a mensagem retornada vem com a expressão
    is alive — é por que o host foi encontrado e está respondendo;
  • Quando a mensagem contiver expressões como ICMP Host Unreachable from ou is unreachable — é por que ele não foi encontrado ou não está respondendo.

Você pode usar a opção -g para verificar um intervalo grande como todas os 255 possíveis hosts em 192.168.1.*. Veja como:

fping -g 192.168.1.0/24

… e nem demorou tanto.
Para enviar o resultado (restrito aos hosts que foram alcançados) para um arquivo, pode usar o comando grep:

fping -g 192.168.254.0/24 | grep alive > is_alive.txt
cat is_alive.txt

Quando o perímetro, em que você deseja fazer sua busca, não está com o tráfego ICMP bloqueado, é possível encontrar rápido e sem muito esforço todos as máquinas conectadas à rede.

Defina o intervalo de tempo entre os pacotes ping

Você pode usar o parâmetro -i para especificar o intervalo mínimo de tempo entre um pacote ping (em milisegundos) a qualquer alvo:

fping -i 10 -g 192.168.254.0/24

O comando, acima, estabelece o intervalo de 10 milisegundos (ou 0,01 segundo) entre o envio de um pacote e outro, para todos endereços compreendidos no espectro de 192.168.254.0 a 192.168.254.255.
O valor padrão é 25 ms, de acordo com a documentação do programa.

Obtenha um resumo da sondagem do fping na sua rede

Ao adicionar -s à linha de comando, é possível obter um resumo ao final do trabalho do fping, em que ele informa:

  1. targets — alvos objetivados.
  2. alive — alvos ativos.
  3. unreachable — alvos intangíveis, inalcançáveis.
  4. unkown addresses — endereços desconhecidos.
  5. timeouts — tempo de resposta expirado (esperando retorno).
  6. ICMP Echos sentechos ICMP enviados.
  7. ICMP Echo Replies received — respostas em echos ICMP recebidas.
  8. other ICMP received — outros sinais ICMP recebidos.
  9. (elapsed real time) — tempo de execução real.

Veja um exemplo de relatório resumido:

fping -g 192.168.254.0/24 -s
192.168.254.1 is alive
192.168.254.2 is alive
192.168.254.3 is alive
192.168.254.7 is alive
ICMP Host Unreachable from 192.168.254.3 for ICMP Echo sent to 192.168.254.4
ICMP Host Unreachable from 192.168.254.3 for ICMP Echo sent to 192.168.254.5
ICMP Host Unreachable from 192.168.254.3 for ICMP Echo sent to 192.168.254.6
ICMP Host Unreachable from 192.168.254.3 for ICMP Echo sent to 192.168.254.8
ICMP Host Unreachable from 192.168.254.3 for ICMP Echo sent to 192.168.254.9
ICMP Host Unreachable from 192.168.254.3 for ICMP Echo sent to 192.168.254.10
ICMP Host Unreachable from 192.168.254.3 for ICMP Echo sent to 192.168.254.11
ICMP Host Unreachable from 192.168.254.3 for ICMP Echo sent to 192.168.254.12

     (...)

     254 targets
       5 alive
     249 unreachable
       0 unknown addresses

     249 timeouts (waiting for response)
    1001 ICMP Echos sent
       5 ICMP Echo Replies received
     942 other ICMP received

 0.10 ms (min round trip time)
 50.3 ms (avg round trip time)
 131 ms (max round trip time)
       26.827 sec (elapsed real time)

Como filtrar resultados do fping

Além do comando grep (veja os links ao final), é possível resumir bastante o relatório de saída.
Para obter apenas o relatório resumido, visto anteriormente, acrescente a opção -q:

fping -g 192.168.254.0/24 -s -q

Limite a quantidade de tentativas

O fping faz 3 tentativas para alcançar os alvos definidos, como comportamento padrão.
É possível aumentar ou diminuir este valor, de acordo com a sua conveniência. Veja como definir o número de tentativas para 5:

fping -r 5 -g 192.168.254.0/24

Se você acha que não precisa haver outras tentativas e prefere obter um resultado mais rápido da sondagem, use o valor -r 1.
Você pode encontrar muito mais informações sobre possibilidades de utilização no manual do comando. Recomendo a sua leitura, daqui pra frente.
Que suas buscas sejam frutíferas! 😉

Fontes:

Como saber o meu endereço IP no Ubuntu, dentro da minha rede local.

É possível descobrir o seu endereço IP de várias formas. As que eu mais uso são as seguintes:

Pelo gerenciador de redes

Normalmente, na barra de status, à esquerda, há um pequeno ícone que indica o estado da conexão. É possível conectar ou desconectar-se da rede. O seu formato varia de acordo com o tema que você estiver usando.

Ao clicar nele, com o botão direito do mouse, é possível ver uma lista de opções.

Lista de opções do gerenciador de redes

Selecione “Informações da conexão” e aguarde a abertura da janela de informações.

A 6a. linha mostra o seu Endereço IP.

Na linha de comando

Abra um terminal e entre o comando:
ifconfig
Semelhante ao comando ipconfig no Windows, ele fornece informações sobre as suas conexões, no console. No caso, aqui, a rede usada é Wi-Fi. Portanto, a informação desejada se encontra na seção wlan0. Adapte esta informação ao seu caso.