WHILE para PING em linha de comando

Publicado por Pedro Augusto Malanga em 03/02/2011

[ Hits: 10.853 ]

 


WHILE para PING em linha de comando



Olá pessoal, sei de outras opções para fazer um scanner e levantar os IPs de uma rede. Porém no caso de já saber qual é minha rede e querer saber somente quem está respondendo o ping, em linha de comando digite:

ip=0; while [ "$ip" -lt 255 ]; do ip=$((ip+1)); echo `ping -c 1 -t 5 192.168.1.$ip`; done;

Ele fará uma busca em 255 posições e teremos respostas parecidas com o seguinte:

PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data. --- 192.168.1.2 ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms


ou:

PING 192.168.1.5 (192.168.1.5) 56(84) bytes of data. 64 bytes from 192.168.1.5; icmp_seq=1 ttl=252 time=76.0 ms ---
192.168.1.5 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev =
76.067/76.067/76.067/0.000 ms


Por isso que eu gosto de Linux!

Abraços.

Outras dicas deste autor

Tempo de execução de um comando - TIME ou TIMES

OpenLDAP básico no CentOS

Configurando servidor Proftp no Debian Lenny com autenticação LDAP e filtro por grupo

Análise performance no Linux com o Nmon

OpenFire com memória baixa

Leitura recomendada

dd - status através dos comandos kill e pgrep

Comando "ls" completo, para mostrar várias características de seus arquivos e diretórios

Comandos para Postfix

Fingindo que está ocupado no trabalho enquanto toma um café ouvindo podcast

Visualizando tempo de conexão com o ac

  

Comentários
[1] Comentário enviado por hellnux em 03/02/2011 - 11:46h

Opa,

Só uma pequena contribuição. Em vez de:

ip=$((ip+1))

Pode ser apenas:

(( ip++ ))

[2] Comentário enviado por fabio em 03/02/2011 - 11:47h

Bela dica! Permita-me dar minha contribuição. Para mostrar somente os hosts que estão respondendo:

ip=0; while [ "$ip" -lt 15 ]; do ip=$((ip+1)); echo `ping -c 1 -t 5 192.168.78.$ip` 2>/dev/null | grep '1 received'; done;

Ou seja, apenas acrescentei o seguinte após o comando ping:

| grep '1 received'

Um abraço.

[3] Comentário enviado por luizluca em 03/02/2011 - 14:17h

Olá amigo,

Só para deixar registrado outra forma de varrer a rede por ping:

nmap -sP 192.168.1.0/24

Nmap é muito bom.

[4] Comentário enviado por fernandomerces em 04/02/2011 - 01:04h

Opa, legal a idéia. Vou contribuir também:

# Eu usaria o for, pra ficar menor
$ for i in `seq 1 254`; do ping -c 1 192.168.0.$i; done

# O BASH também suporta o C-style
$ for ((i=1; i<255; i++)); do ping -c 1 192.168.0.$i; done

Abraços!

[5] Comentário enviado por malanga em 04/02/2011 - 21:56h

valeu pessoal


show de bola as dicas....





Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts