Encontre o usuário do intervalo de rede?

2

Estou fazendo um scanner de rede que funcionará em qualquer rede. Este é o meu código até agora

fd=$(date +%m%d%y%H%M%S)
echo -e "IP$fd\nReport of IP addresses on this intranet, test started at \n$(date)\n\nThe following IP addresses were found:" > IP$fd.txt
echo -e " Okay. Mind you, this could take a couple of minutes.\nI'll be scanning all 254 possibilities between 192.168.1.1 and 192.168.1.254\nI will ring the system bell when I am done.\nHere we go..."
for i in 192.168.0.{1..254}
do
echo "scanning $i"
if [ "$(ping -q -c1 $i)" ]
then
echo -e "AHA! Got one! ---- $i is up!"
fi
echo "END SCAN"
done
echo -e "That's all I got.\Test completed at\n$(date)\n" >> IP$fd.txt
echo -e \a
echo -e "Your report is IP$fd.txt, and this is what it says:\n"
exit

Exceto o problema é que isso só funcionará se o seu intervalo de IP for 192.168.0.1-255. Não retornará nada se o ip for 10.10.10.1.

Existe alguma maneira que eu possa obter o alcance da rede de usuários e aplicá-lo ao meu script?

Edit: estou executando como root

    
por Sirens 27.02.2013 / 23:39

2 respostas

1

Não há maneira portátil.

No Linux, você pode listar todas as sub-redes IPv4 que o host pertence usando:

ip -4 route show scope link | awk '{print $1}'

(Observe que pode haver mais de um .)

    
por 28.02.2013 / 00:02
0

Você pode extrair os detalhes da rede atual da saída de ifconfig -a

A partir disso, você deve ser capaz de configurar variáveis para o seu loop. Pode ser mais fácil trabalhar com endereços inteiros em vez de quadras pontilhadas.

Haverá vários intervalos de endereços, alguns deles IPV4 e alguns IPV6.

Para detectar redes próximas às quais a máquina atual não está diretamente conectada, isso exigiria muito mais trabalho.

    
por 28.02.2013 / 00:06