Skip to content

Instantly share code, notes, and snippets.

@pedroricardo
Created March 17, 2023 12:12
Show Gist options
  • Save pedroricardo/92f4cb738371cd27fbc86f5453e8542a to your computer and use it in GitHub Desktop.
Save pedroricardo/92f4cb738371cd27fbc86f5453e8542a to your computer and use it in GitHub Desktop.
Listar o IP e o NOME dos dispositivos conectados à rede
#!/bin/bash
#-- Finalidade: Listar o IP e o NOME dos dispositivos conectados à rede
#-- Distros...: Debian 9 Stretch, Kali Linux 2017.2 amd64
# Identificação da Distribuição
distro=`cat /etc/*-release | grep PRETTY_NAME | cut -d "\"" -f2`
echo -e "\n > Distribuição: $distro"
# Conexoes
echo -e "\n > Pesquisando conexões ativas..."
qtdConexoes=`ifconfig -a | grep broadcast -c`
if [ "$qtdConexoes" -eq 0 ]; then
echo -e "\n ****** Nenhuma conexão ativa. ****** \n"
exit
else
if [ "$qtdConexoes" -eq 1 ]; then
echo -e " Uma conexão ativa."
else
echo -e " $qtdConexoes conexões ativas."
fi
fi
# Interfaces
echo -e " > Obtendo Nomes da(s) interface(s) de rede..."
interfaces=( `ifconfig -a | grep broadcast -B 1 | cut -d ":" -f1 -s | sed 's/ //g'` )
# Inets
echo -e " > Obtendo IP(s) da(s) interface(s) de rede..."
inets=( `ifconfig -a | grep broadcast | cut -d "n" -f2 | sed 's/et//g' | sed 's/ //g'` )
# Selecao das interfaces
selecionada=0
i=0
n=0
if [ "$qtdConexoes" != "1" ]; then
echo -e "\n Interfaces de rede conectadas:"
echo -e " ----------------------------------"
for inet in ${inets[@]}
do
let n=$n+1
opcoes=( ${opcoes[@]} "$n" )
echo -e " $n-${interfaces[$i]}\t IP:$inet"
let i=$i+1
done
echo -e " ----------------------------------"
invalida=1
texto=" Selecione uma interface de rede: "
while [ $invalida -eq 1 ]; do
echo -e -n "$texto"
read selecionada
texto=" Digite o NÚMERO da interface de rede: "
for opc in ${opcoes[@]}
do
if [ "$selecionada" = "$opc" ]; then
invalida=0
fi
done
done
let selecionada=$selecionada-1
fi
interface=${interfaces[$selecionada]}
inet=${inets[$selecionada]}
# Gateway Padrão
lin=( `sudo netstat -r -n | grep -m1 "$interface"` )
gateway=${lin[1]}
echo -e -n "\n > Gateway Padrão da interface [$interface] = $gateway"
# Prefixo
octetos=( ${gateway//'.'/' '} )
prefixo="${octetos[0]}.${octetos[1]}.${octetos[2]}"
echo -e "\n > Prefixo da rede = $prefixo"
# IPs conectados
echo -e -n " > Pesquisando IPs conectados à rede..."
ips=( `sudo nmap -sP -n -T5 --exclude "$gateway" "$prefixo.0-255" | grep "Nmap scan report for " | cut -d " " -f5` )
echo -e -n "\n > Obtendo nomes dos dispositivos conectados à rede..."
echo -e "\n -------------------------------------------------------------------"
echo -e " IP\t\t->\tDispositivo"
echo -e " -------------------------------------------------------------------"
i=0
for ip in ${ips[@]}
do
echo -n -e " ${ips[$i]}\t->\t"
nome="nenhum"
for inet in ${inets[@]}
do
# Se o ip pesquisado for do próprio computador
if [ $ip = $inet ]; then
nome=`uname -n`
fi
done
#Obtém o nome do Dispositivo do Ip
if [ $nome = "nenhum" ]; then
nome=`sudo nmblookup -A "$ip" | grep -m1 "<00>" | cut -d " " -f1`
fi
# Se o cliente não fornecer o nome do Computador,
if [ "$nome" = "" ]; then
# Nome do Fabricante da placa de rede do cliente
nome=`sudo nmap -sP -n $ip | grep "MAC Address: " | cut -d "(" -f2 | sed 's/ /_/g' | sed 's/)//g'`
fi
echo -e $nome
let i=$i+1
done
echo -e " -------------------------------------------------------------------"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment