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