Esta resposta usa o comando nmap
para coletar informações de hosts ativos na rede.
Nmap ("Network Mapper") é uma ferramenta de código aberto para exploração de redes
e auditoria de segurança. Ele foi projetado para varrer rapidamente grandes redes,
embora funcione bem contra hosts únicos. Nmap usa pacotes IP brutos
de novas maneiras para determinar quais hosts estão disponíveis na rede,
que serviços (nome do aplicativo e versão) esses hosts estão oferecendo,
que sistemas operacionais (e versões do SO) estão executando, que tipo
filtros de pacotes / firewalls estão em uso, e dezenas de outros
características.
Supondo que você precisa verificar o intervalo 192.168.0.X, tente:
nmap -v -sP 192.168.0.0/24
Em que 192.168.0.0
é o endereço de rede e /24
é a máscara de rede equivalente a 255.255.255.0
. Assim, o comando acima irá varrer 256 hosts.
Para coletar os endereços IP ativos, pode-se usar a seguinte linha:
IPS_UP=$(nmap -nsP 192.168.0.0/24 2>/dev/null -oG - | grep "Up$" | awk '{printf "%s ", }')
Na verdade, ela concatena a lista de endereços IP ativos (filtrados por grep
) em uma variável chamada IPS_UP
:
-
nmap
é executado com as opções -n
(sem resolução de nomes), -sP
(ping scan) e -oG
para produzir uma saída processável em grep na saída padrão ( -
).
-
grep
filtra apenas as linhas que contêm a palavra "Up" no final da linha ("$").
-
awk
imprime a segunda coluna na lista de saída por nmap
, que é o endereço IP, e acrescenta um espaço.
- A substituição do comando
$()
permite que a saída da cadeia de comandos seja atribuída à variável IPS_UP
.
O Network Mapper pode ser instalado usando sudo apt-get install nmap
.
Observação
nmap
pode descobrir mais hosts se for executado por um usuário privilegiado. Isso ocorre porque diferentes tipos de pacotes são enviados para varrer um host. Modificando a linha acima para ler sudo nmap ...
permite executar o comando nmap
como root.