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

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

Re: En: RE: [shell-script] script ping


From: Tiago Barcellos Peczenyj
Subject: Re: En: RE: [shell-script] script ping
Date: Wed, 13 Sep 2006 14:56:58 -0300

Ola,

eu usaria um grep -q (silent mode) para verificar se existe o conteudo indicado.

se existir, eu elaboro alguma coisa com o operador &&

#!/bin/bash
clear
read -p 'Digite o IP desejado(ex.: 10.13.1.) : ' ip
read -p 'Digite o inicio do ultimo IP(ex.: 1): ' inicio
read -p 'Digite o termino do IP(ex.:250 )    : ' final

echo "Varrendo ${ip%\.}.${inicio} ate ${ip%\.}.${final}"
echo "Conectando..."
erros=0
total=0
for i in $(seq $inicio $final) ; do
 status="ok"
 target="${ip%\.}.${i}"
 ping -c 2 $target | grep -q "100% packet loss" && { status="falho" ;
let erros++ ; }
 echo "$target $status"
 let total++
done

echo "total: erros: $erros em $total "

On 9/13/06, pablo freitas <address@hidden> wrote:
 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]



---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil


Links do Yahoo! Grupos











--
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer


reply via email to

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