No meu trabalho, há muito computador e quero fazer uma piada. Posso fechar o computador pela rede, mas é difícil encontrar endereços IP.
Como posso encontrar facilmente todos os endereços IP online de 192.168.1.aa a 192.168.1.zz?
No meu trabalho, há muito computador e quero fazer uma piada. Posso fechar o computador pela rede, mas é difícil encontrar endereços IP.
Como posso encontrar facilmente todos os endereços IP online de 192.168.1.aa a 192.168.1.zz?
Respostas:
Geralmente, nmapé bastante útil para verificar redes rapidamente.
Para instalar o nmap, digite o seguinte comando no terminal:
sudo apt-get install nmap
Depois que o aplicativo estiver instalado, digite o seguinte comando:
nmap -sn 192.168.1.0/24
Isso mostrará quais hosts responderam às solicitações de ping na rede entre 192.168.1.0 e 192.168.1.255.
Para versões mais antigas do Nmap, use -sP:
nmap -sP 192.168.1.0/24
Para referências adicionais, consulte as seguintes páginas:
É uma ferramenta muito útil para aprender.
Se todos os computadores da sua rede forem Ubuntu ou qualquer outra distribuição que utilize avahi-daemon( DNS-SD ), você poderá obter uma lista detalhada deles (com nome do host e endereço IP), fazendo:
avahi-browse -rt _workstation._tcp
Se você deseja conhecer todos os endereços IP usados na sua rede, pode usar arp-scan:
sudo arp-scan 192.168.1.0/24
Como não está instalado por padrão, você precisará instalá-lo sudo apt-get install arp-scan. arp-scanenvia pacotes ARP para a rede local e exibe as respostas recebidas, para mostrar até hosts com firewall (que bloqueiam o tráfego com base em pacotes IP).
arp-scannão encontra todos os dispositivos associados à minha rede sem fio. Agora, por exemplo, sudo arp-scan 192.168.2.0/24mostra 2 resultados (.1 e .1), enquanto nmap -sn 192.168.2.0/24mostra 4 resultados (.1, .2, .3 e .4). Portanto, parece que nmapé mais preciso (sei com certeza que existem 4 dispositivos conectados à rede). Por que é isso?
nmap.
arp-scané legal !
Nota para o leitor : A resposta original foi postada há um tempo atrás e na época em que eu estava apenas aprendendo scripts de shell. Veja a versão revisitada abaixo para obter um script novo e aprimorado com desempenho muito mais rápido.
nmapseria a minha escolha número 1, mas e se você não a tiver? A maneira DIY seria com um script de ping que percorre cada endereço IP possível na rede manualmente. O que temos aqui é just loop, onde definimos o último número no endereço, fazemos ping único silencioso no endereço, verificamos se o comando foi bem-sucedido ou não (e se foi bem-sucedido, o host está obviamente ativo) e a printfinstrução. De maneira rápida e suja, levei cerca de 10 minutos para escrevê-lo, mas o tempo de execução pode ser um pouco lento.
#!/bin/sh
# set -x
NUM=1
while [ $NUM -lt 256 ];do
ping -q -c 1 192.168.0.$NUM > /dev/null
RESULT=$(echo $?)
if [ $RESULT -eq 0 ]; then
printf 192.168.0.$NUM"\n"
fi
NUM=$(expr $NUM + 1)
done
Originalmente, publiquei essa resposta em agosto de 2015. Desde então, aprendi um pouco mais sobre scripts de shell e, uma vez que vi esse script, pensei que seria uma boa ideia revisar essa resposta para adicionar algumas melhorias. Aqui estão algumas idéias:
O script é obviamente lento e pingaguarda resposta do host. Por padrão, pingpara dois RTT, que podem variar dependendo de como sua rede está congestionada, e até onde eu entendo, o protocolo TCP duplica o tempo de espera a cada vez (pelo menos de acordo com isso ). Para que pudéssemos forçar o pingtempo limite com a -w 1bandeira. Como temos 256 endereços e assumimos 1 segundo para cada endereço, o script levará cerca de 256/60 = 4,27 minutos.
Realizar um comando e depois capturar seu status de saída $?não era realmente necessário. O if ... then;...fipode operar em comandos diretamente. Em outras palavras, é suficiente fazer isso:
if ping -w 1 -q -c 1 192.168.0.$NUM > /dev/null ;
then
<some other code here>
fi
O printfcomando pode ser reescrito da seguinte maneira:
printf "IP %s is up\n" 192.168.0."$NUM"
Isso é mais uma mudança estilística, mas é consistente com a forma como printffunciona e se parece em muitos outros idiomas, com a "$NUM"variável de citação . Não é necessário citar aqui - como estamos lidando apenas com números, não precisamos antecipar a divisão de palavras devido ao espaço em uma variável.
Uma melhoria de desempenho muito melhor pode ser alcançada se gerarmos vários processos em segundo plano. A edição do script abaixo faz exatamente isso. Coloquei o pinge printfem uma função pingf(sim, nome brega, eu sei). Agora, há também uma única mainfunção que executa o loop e a chamada pingf.
#!/bin/sh
# Uncomment for debugging
#set -x
pingf(){
if ping -w 2 -q -c 1 192.168.0."$1" > /dev/null ;
then
printf "IP %s is up\n" 192.168.0."$1"
fi
}
main(){
NUM=1
while [ $NUM -lt 255 ];do
pingf "$NUM" &
NUM=$(expr "$NUM" + 1)
done
wait
}
main
Quão melhor isso funciona? Nada mal, na verdade, leva alguns segundos.
$ time ./ping_script.sh
IP 192.168.0.1 is up
IP 192.168.0.101 is up
IP 192.168.0.27 is up
IP 192.168.0.29 is up
0m02.50s real 0m00.01s user 0m00.12s system
A descoberta de rede pode ser sua resposta.
Para instalar via terminal:
sudo apt-get install netdiscover
exemplo de uso:
sudo netdiscover -r 192.168.1.0/24 -i wlan0
Um IP com endereços MAC aparecerá no seu terminal. Veja a captura de tela
espero te ajudar
*** buffer overflow detected ***: netdiscover terminated .
fpingé uma ótima ferramenta para varrer vários hosts em uma rede via ICMP. Se não estiver instalado, você pode instalá-lo:
sudo apt-get install fping
fping envia pacotes ICHO ECHO_REQUEST e marca um host como Up se receber ECHO_RESPONSE do host.
Por exemplo, para verificar os hosts da sub-rede 192.168.1.0/24, você pode:
fping -g 192.168.1.0/24
Para um número específico de hosts, por exemplo, de 192.168.1.15a 192.168.1.140:
fping -g 192.168.1.15 192.168.1.140
fping é altamente configurável, por exemplo, quantos pacotes serão enviados, tempo para aguardar resposta, formato de saída etc.
Marque man fpingpara ter mais ideia.
angry ip scanner