Verificando Ping

Fórum para dúvidas de Shell Script.

Verificando Ping

Mensagempor Junior em Qui Jan 24, 2008 08:35

Bom dia Pessoal

Alguem poderia me ajudar, sobre como faço para verificar a saida de um ping.

Exemplo:
eu preciso ficar pingando um router, e se caso ele saia fora, como eu posso ficar sabendo.

como posso pegar o retorno dele?

obrigado
Junior
Novato
Novato
 
Mensagens: 33
Registrado em: Qua Abr 18, 2007 21:42

Mensagempor iiisaaac em Sex Jan 25, 2008 17:53

Olá Junior,

Você pode tentar esse script:

Código: Selecionar todos
#!/bin/bash

PINGTEST=`ping -c 1 192.168.0.1 | grep 0\ received`

while [ -z "$PINGTEST" ]
do
   sleep 60
   PINGTEST=`ping -c 1 192.168.0.1 | grep 0\ received`
done

xmessage -nearmouse "O roteador não está respondendo"


Ele faz um ping e procura por uma linha que contenha o texto "0 received". Caso não exista nenhuma linha assim, ou seja, o roteador respondeu, ele espera por 60 segundos e faz um novo ping. Quando nenhum pacote for recebido, o script executa a linha seguinte (xmessage ...). Você pode executar alguma outra coisa no lugar do xmessage ou junto com ele, tocar uma música, fazer um beep, mandar e-mail ou SMS caso a sua conexão com a internet não dependa desse roteador, sei lá o quê você quer fazer.

O script acaba assim que ele detectar uma falha no ping, então você vai ter que executá-lo novamente. Outra possibilidade é fazer um loop, como nesse exemplo:

Código: Selecionar todos
#!/bin/bash

ROTEADOR=192.168.0.1
PACOTES=1
PINGTEST=`ping -c $PACOTES $ROTEADOR | grep 0\ received`

while [ 1 ]
do

   while [ -z "$PINGTEST" ]
   do
      sleep 60
      PINGTEST=`ping -c $PACOTES $ROTEADOR | grep 0\ received`
   done
   xmessage -nearmouse "O roteador não está respondendo" &

   while [ -n "$PINGTEST" ]
   do
      sleep 60
      PINGTEST=`ping -c $PACOTES $ROTEADOR | grep 0\ received`
   done
   xmessage -nearmouse "O roteador está funcionando" &

done


Espero que isso ajude,

Até mais.
iiisaaac
Novato
Novato
 
Mensagens: 11
Registrado em: Sáb Abr 07, 2007 01:59

Mensagempor Junior em Ter Fev 05, 2008 20:35

Boa noite meu caro..
eu escutei os dois scripts, logicamente alterando os Ip de acordo com minha estrutura,
mas não funcionou.. ao executar ele fica parado, e nada acontece..!
alguma outra sugestao?
Muito obrigado, pois só com esse seu script ja deu para tirar umas ideias boas!
Junior
Novato
Novato
 
Mensagens: 33
Registrado em: Qua Abr 18, 2007 21:42

Mensagempor iiisaaac em Qua Fev 06, 2008 21:32

Olá,

Como você está executando o script? Dentro de um ambiente gráfico, pelo init.d, .xinitrc? Você tem o xmessage instalado? Esse programa vem dentro do pacote xbase-clients. Você também pode instalar o gmessage, ele é mais bonito e pode rodar com a opção -display :0, caso você esteja em um ambiente gráfico e rodou o script de um terminal ou na inicialização do sistema (acho que funciona, nunca tentei). Se não estiver usando X, uma alternativa é usar o comando echo, assim você pode ver no terminal se o ping falhou.

Não sei se isso é possível, mas talvez o output do seu ping seja diferente do meu (outro idioma ou formatação). Faça um ping usando um ip que não exista na sua rede e veja se a linha de estatística tem o texto "0 received" no meio, que é o que o script está procurando.

Quando você testou o script, esperou pelo menos 60 segundos com o roteador desligado ou com um ip não acessível? Se você achar que 60 segundos entre cada teste é muito, mude as linhas sleep 60.

Se isso não resolver, alguém aqui pode encontrar o erro, não sei o que mais pode ser.
iiisaaac
Novato
Novato
 
Mensagens: 11
Registrado em: Sáb Abr 07, 2007 01:59

Mensagempor Junior em Seg Fev 18, 2008 20:02

Boa noite Isaaac

eu resolvi o problema, juntando a sua ideia, e mais de um amigo meu.
eu fiz o script gerando log no messages,


#!/bin/bash

x=$(ping -c3 172.16.1.1)

case $? in
0)
data=`date`
echo "O LINK ESTA OK!! - $data " >> /var/log/messages
;;
1)
data=`date`
echo -e '\e[31;1mO LINK NAO ESTA RESPONDENDO!! - \e[m' $data >> /var/log/messages
;;
*)
data=`date`
echo "O LINK ESTA FORA DO AR!! - $data " >> /var/log/messages
;;
esac


Como pode ver é beeemmm simples
mas muito funcional
e vc ainda pode colocar de vermelho no log quando o Dispositivo monitorado cair

Valeu Pelas dicas e a atenção prestada..

Abraços!
Espero um dia Pode lhe ajudar em algo tbm aqui na comunidade!
Junior
Novato
Novato
 
Mensagens: 33
Registrado em: Qua Abr 18, 2007 21:42

Re: Verificando Ping

Mensagempor maestrolim em Seg Jul 26, 2010 01:01

Bom dia

sobre o script
gostaria de que quando o computador estiver online, envie uma msg (email mesmo) para um endereço
específico

como poderia utilizar este script ?

obs: a idéia é monitorar um simples ip fixo, se possivel o script rodar de 1 em 1 minuto via cron talvez
maestrolim
Novato
Novato
 
Mensagens: 1
Registrado em: Seg Jul 26, 2010 00:58

Re: Verificando Ping

Mensagempor DanielVieceliSh em Qua Ago 18, 2010 17:48

Opa muinto bom esse script ae vlw...
Imagem
DanielVieceliSh
Novato
Novato
 
Mensagens: 5
Registrado em: Qua Ago 18, 2010 08:34
Localização: Pinhalzinho-SC


Voltar para Shell Script

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes