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