shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: RE: [shell-script] script ping


From: Gabriel Henrique
Subject: RE: RE: [shell-script] script ping
Date: Wed, 13 Sep 2006 15:27:56 -0300

Bom amigo, vamos lá...

 

Temos 2 pequenos problemas....

 

O primeiro é que vc trocou a ordem de checagem, ou seja, quando $VAR = 0 o
“target” está ok.

 

O segundo é que a entrada do “if” deve ser “if [[ $VAR = 0 ]]” e não “if [[
$VAR=0 ]]” (reparou o espaço antes e depois do “=”?)

 

É isso aí!

 

flw

 

  _____  

From: address@hidden
[mailto:address@hidden] On Behalf Of pablo freitas
Sent: quarta-feira, 13 de setembro de 2006 14:27
To: address@hidden
Subject: En: RE: [shell-script] script ping

 

Obrigado Gabriel, por ter respondido minha pergunta, só que não funcionou,
está dando todos os ips ok.
  Eu botei assim, como vc disse:
  #!/bin/bash
{
  rm -rf /tmp/ping
  clear
  echo 'digite o IP desejado(ex.: 10.13.1.): '; read ip
  echo 'digite o inicio do ultimo IP(ex.: 1): '; read inicio
  echo 'digite o termino do IP(ex.:250 ): '; read final
  for i in $(seq $inicio $final) ; do
          target="${ip%\.}.${i}"
        ping -c 2 $target > /tmp/ping
        VAR="$( grep "100% packet loss" /tmp/ping | wc -l )"
        if [[ $VAR=0 ]]
        then
                echo "$target falhou"
        else
                echo "$target ok"
         fi
  done
    exit
  }
   
     Tentarei ser mais claro possível, assim quem sabe poderá me ajudar.
     Estou fazendo um script, para varrer o ip da nossa rede usando o
comando ping.
   Só que com o primeiro método não estava conseguindo separar do IP 'ok' do
'Falhou', tinha alguns IPs, q era pra gerar falhou mas estava dando ok.
     Quando o documento era gerado (/tmp/ping), eu reparei:
   
  OK gerava a seguinte mensagem:
   
    2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 3.461/3.633/3.805/0.172 ms, pipe 2

  FALHOU gerava a seguinte mensagem:
   
    2 packets transmitted, 0 received, +2 errors, 100% packet loss, time
999ms
, pipe 3

  Até aí beleza, só que tem alguns IPs, que não existem que eh gerada a
mensagem:
   
  2 packets transmitted, 0 received, 100% packet loss, time 999ms
   
  e o resultado desse saía como OK, qdo era para sair como FALHOU. 
   
  Eu reparei o que diferencia nos OK para o falhou era:
  OK saia como 'pipe 2' ou '0 received' e os FALHOU '100% packet loss' ou '0
received'
   
  Eu queria saber qual seria o comando por exemplo:
                                              # VAR="$( tail -1 /tmp/ping |
cut -d' '  -f2-3 )"#
se retornar pipe 2     (já tentei # if test "$VAR" = "pipe 2"
# )
        imprime ok
  então
        imprime falha
   
  ou
   
  se o arquivo gerado tiver "100% packet loss"
      imprime falha
  então
     imprime ok
   
  OBRIGADO!
  
Gabriel Henrique <address@hidden> escreveu:
  Olá amigo!

Não sei se entendi muito bem sua pergunta, mas creio que o grep resolve o
problema.

Uma sugestão seria trocar o 

VAR="$( tail -1 /tmp/ping | cut -d' '  -f2-3 )"
por

VAR="$( grep “100% packet loss” /tmp/ping | wc -l )"

Assim $VAR poderá ter os valores 0 (não possui a ocorrência) ou 1 (possui a
ocorrência)

Sendo assim,

if [[ $VAR = 0 ]]
then
            echo “$target ok”
else
            echo “$target falhou”
fi

e pronto!

flw

  _____  



Pablo escreveu:
Pessoal, estou com uma dúvida para fazer o script para varrer o ip, dando o
comando ping, o meu programa está + ou - assim:
  #!/bin/bash
{
  rm -rf /tmp/ping
  clear
  echo 'digite o IP desejado(ex.: 10.13.1.): '; read ip
  echo 'digite o inicio do ultimo IP(ex.: 1): '; read inicio
  echo 'digite o termino do IP(ex.:250 ): '; read final
  for i in $(seq $inicio $final) ; do
          target="${ip%\.}.${i}"
        ping -c 2 $target > /tmp/ping
        VAR="$( tail -1 /tmp/ping | cut -d' '  -f2-3 )"
        if test "$VAR" = "pipe 3"
        then
                echo "$target falhou"
        else
                echo "$target ok"
        fi
  done
  exit

  Eu reparei que alguns itens:
  -Quando o IP está fora, ele retorna:
   
  2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 999ms
, pipe 3

  - IPs não retornam o pipe, ele retorna "100% packet pass", e ele imprime
no "$target ok" (isso é lógico, pq eu fiz o teste para pipe 3):
   
  2 packets transmitted, 0 received, 100% packet loss, time 999ms

  - Quando o IP existe na rede, ele retorna "pipe 2" 
   
  2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 3.461/3.633/3.805/0.172 ms, pipe 2

  e eu ja fiz o seguinte teste:
   
  if test "$VAR" = "pipe 2"
        then
                echo "$target ok"
        else
                echo "$target falhou"
        fi

  Só que retorna todos IPs ok. E eu não entendi o pq.
  E eu queria saber se alguem conhece algum comando + ou -, assim:
   
  se existir no arquivo a palavra '100% packet loss' , 
        imprime falha
  então
        imprime ok
   
  ou
   
  se retornar pipe 2
        imprime ok
  então
        imprime falha
   
  OBRIGADO!

            
---------------------------------
Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular.
Registre seu aparelho agora!

[As partes desta mensagem que não continham texto foram removidas]

 



[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]