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: Flavio Junior
Subject: Re: En: RE: [shell-script] script ping
Date: Wed, 13 Sep 2006 15:42:33 -0300

deixa eu cair de paraquedas como de costume e  vamos la:

Voce não pode fazer algo como:
#--- codigo
#!/bin/bash
ping -c3 -w3 $1 >/dev/null 2>&1
if [ $? == 0 ]; then
   echo "A maquina esta UP"
else
   echo "man down! A maquina esta DOWN"
fi
#--- codigo

Veja, salvei como xping e como fiz usando o $1 soh pra exemplo, vc
adapta pra vc ai:
root@slave:~# sh xping 192.168.0.1
man down! A maquina esta DOWN
root@slave:~# sh xping 192.168.0.4
A maquina esta UP
root@slave:~#


usei a linha "sh xping" pq eu não setei +x pra ela, acho que nem
precisava dizer isso neh..

Veja se isso ajuda pra voce.


Flávio do Carmo Junior


On 9/13/06, Tiago Barcellos Peczenyj <address@hidden> wrote:
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


---------------------------------------------------------------------
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










reply via email to

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