Pular para o conteúdo

Listar as máquinas/dispositivos online em determinada rede

Dica publicada em Linux / Comandos
Fábio Berbert de Paula fabio
Hits: 3.796 Categoria: Linux Subcategoria: Comandos
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Listar as máquinas/dispositivos online em determinada rede

Vou apresentar uma sequência de comandos à la administrador de sistemas raiz para listar todas as máquinas ou dispositivos online em determinada rede.

Como exemplo vou usar minha rede interna, que vai de 192.168.0.1 até 192.168.0.255:

echo 192.168.0.{1..255} | xargs -n1 -P0 ping -c1 | grep "bytes from" | sed -se 's/^.* from \([0-9\.]*\):.*$/\1/' | sort -V

Onde:

echo 192.168.0.{1..255}

Imprime de 192.168.0.1 até 192.168.0.255.

xargs -n1 -P0 ping -c1

O argumento -n1 diz que é para executar um comando para cada argumento. Como estou passando 255 argumentos via pipe, o xargs irá disparar 255 comandos ping, um para cada argumento. Você pode trocar o "1" pelo número que quiser, mas no caso do ping não irá funcionar.

E o argumento -P indica que execução paralela. Se eu quiser executar 3 pings por vez, a sintaxe seria -P3. Em nosso exemplo estamos usando -P0, que indica ao xargs para paralelizar quantos "ping" o sistema operacional permitir.

Por fim, temos a execução do comando "ping -c1 IP", que dispensa explicação... ou "man ping" se não entendeu né minha filha! rsrs

grep "bytes from"

Filtrar a saída do ping apenas pela linha de resposta, a que contém o seguinte formato:

64 bytes from xxx (xxx): icmp_seq=1 ttl=53 time=14.7 ms

Logo, se o IP informado estiver offline, o grep acima irá retornar vazio.

sed -se 's/^.* from \([0-9\.]*\):.*$/\1/'

Lembram da linha acima filtrada pelo grep? Este sed extrai o endereço IP que está entre parêntesis.

sort -V

Ordenar por versão. Um número de IP é similar a um número de versão. O sort consegue identificar isso e ordenar corretamente.

Por exemplo, em um sort normal teríamos:

192.168.0.1
192.168.0.10
192.168.0.14
192.168.0.2
192.168.0.3


Já em um "sort -V":

192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.10
192.168.0.14


NOTA: eu sei, é possível fazer isso de forma bem mais simples utilizando o nmap, mas aí eu não teria a oportunidade de explicar o recurso de multi-threads do xargs por exemplo... já conhecia ele? :)

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Listar processos por consumo de memória

Combinando os comandos head e tail

O comando man

Cmatrix - screensaver do filme no seu terminal

Como instalar o DBeaver no Debian

Pgrep e pkill

Utlilizando o cron

lshw - Gerando relatório HTML de seu hardware

Pegando o seu ip no Linux

Comandos básicos de rede 2

#1 Comentário enviado por maurixnovatrento em 30/07/2020 - 22:39h

Bem legal.

___________________________________
Conhecimento não se Leva para o Túmulo.
#2 Comentário enviado por eduardo em 03/08/2020 - 08:03h
Ótima dica Fábio! Desconhecia a possibilidade de multi-threads do xargs. Sensacional!
Uma nota: na realidade, o comando vai listar os dispositivos que respondem pacotes ICMP (ping) na rede, não os online. Se algum dispositivo estiver com o ICMP bloqueado, vai retornar que está offline, mesmo estando online. Por exemplo, estações windows com firewall habilitado bloqueiam o ping. Em um cenário em que você executa o comando para "ver um IP livre" para configurar um equipamento com IP manual, corresse o risco de duplicar o IP na rede (caso acerte algum que está sendo usado). Mas há solução!
Sempre que você envia um ping, mesmo que o equipamento de destino não responda, o endereço IP + MAC é adicionado na tabela ARP. O que não estão na rede, vai ter o MAC como "incompleto". Sendo assim, basta incrementar o comando com:
# arp -an | grep -v incompleto | cut -d' ' -f2 | sort

Agora tens algo mais confiável =D
#3 Comentário enviado por fabio em 03/08/2020 - 14:23h
Obrigado pelos 2 cents Eduardo! (que foram mais que 2 cents claro rsrs)

Contribuir com comentário

Entre na sua conta para comentar.