Pequeno gerador de relatório da rede (CSV)
Publicado por Dix (última atualização em 28/11/2016)
[ Hits: 9.513 ]
Download 1477147864.Relatorio_Rede.sh (versão 2)
Estava precisando de um script para gerar uma tabela de IPs e MAC de todos os dispositivos da minha rede para aplicar no DHCP e na tabela ARP estática do firewall, mas não tive a paciência (saco) de verificar um a um, então, criei esse script, liguei tudo na rede e executei ele... PRONTO!
Aí, acrescentei o scan de portas (SYN) do Nmap também, apenas para verificar quais portas estavam abertas...
Tabela criada!!! (IP;MAC;FABRICANTE;HOSTNAME;PORTAS)
Dá para adaptar de acordo com o scan que deseja fazer. Ou retirar o scan e deixar apenas a descoberta de hosts ativos.
Montei muito rápido e ficou meio bagunçado, mas funciona...
Depois vou organizar melhor!
Versão 2 - Enviado por Dix em 22/10/2016
Changelog: Funções atualizadas e organizadas.
Linhas desnecessárias eliminadas.
Função para encontrar uma saída para a rede mundial com arping inserida.
Download 1477147864.Relatorio_Rede.sh
#!/bin/bash
#
# Pequeno Gerador de Relatório da Rede (CSV)
#
# by huddioli
# 2014-08-03
#
# testado com nmap 6.46 (Linux Debian 7)
#
# Estava precisando de um script para gerar uma tabela de IPs e MAC de todos os dispositivos da minha rede para aplicar no DHCP e na tabela ARP estática do Firewall
# Não tive a paciencia(saco) de verificar um a um, entao, criei esse Script, liguei tudo na rede e executei o script... PRONTO!
# Aí, acrescentei o Scan de portas(SYN) do Nmap também apenas para verificar quais portas estavam abertas...
#
# Tabela Criada!!! (IP;MAC;FABRICANTE;HOSTNAME;PORTAS)
#
# Da para adaptar de acordo com o Scan que deseja fazer
# Ou retirar o scan e deixar apenas a descoberta de Hosts ativos
#
# Montei muito rápido e ficou meio baguncado, mas funciona...
# Depois vou organizar melhor!
#
#
REDE="11.0.0.0/21"
NOME_BASE="rede_AP"
IFACES="$NOME_BASE""_Interfaces_ativas.txt"
MEUS_IPS="$NOME_BASE""_Meus_IPs.txt"
function EncontrarPlacas(){
ifconfig | grep eth | cut -d" " -f1 > $IFACES
ifconfig | grep wlan | cut -d" " -f1 >> $IFACES
}
function EncontrarIPs(){
if [ -e $MEUS_IPS ];
then
rm $MEUS_IPS
fi
cat $IFACES | while read PLACA;
do
ifconfig $PLACA | grep "inet addr" | cut -c 21- | cut -d" " -f1 >> $MEUS_IPS
done
}
function ScanearRede(){
echo "Scaneando os Hosts ativos da rede "$REDE
echo "Identificando Hosts ativos na Rede..."
nmap -sP "$REDE" > "$NOME_BASE"_PING.txt
}
function FiltrarDados(){
#Monta o cabeçalho do Relatorio CSV
echo "IP;MAC;FABRICANTE;HOSTNAME;PORTAS" > "$NOME_BASE"_COMPILADO.csv
echo "Coletando e filtrando informações dos Hosts..."
#Elimina os IP das placas de rede do Computador do Scan para economizar tempo devido às regras do firewall
cat $MEUS_IPS | while read linha
do
cat "$NOME_BASE"_PING.txt | grep report | cut -d" " -f5 | grep -v $linha >> "$NOME_BASE"_IP2.txt
done
#Ordena em ordem numérica crescente e elimina as entradas duplicadas
sort -n "$NOME_BASE"_IP2.txt | uniq > "$NOME_BASE"_IP.txt
#Cria a base de MACs e de FABRICANTES
cat "$NOME_BASE"_PING.txt | grep MAC | cut -d" " -f3 > "$NOME_BASE"_MAC.txt
cat "$NOME_BASE"_PING.txt | grep MAC | tr ")" "(" | cut -d"(" -f2 > "$NOME_BASE"_FABRICANTE.txt
#Gera o contador para servir de referencia para juntar as informações que estão divididas nos arquivos
NUM=`wc -l "$NOME_BASE"_IP.txt | cut -d" " -f1`
#Inicia o Loop para Realizar os Scans e montar o Relatorio
for (( x=1; x<=$NUM; x++ ))
do
if [ -e "$NOME_BASE"_PORT.txt ];
then
rm "$NOME_BASE"_PORT.txt
fi
if [ -e "$NOME_BASE"_PORTS.txt ];
then
rm "$NOME_BASE"_PORTS.txt
fi
#Montando as Variaveis do Relatorio CSV
IP=`cat "$NOME_BASE"_IP.txt | sed -n "$x p"`
MAC=`cat "$NOME_BASE"_MAC.txt | sed -n "$x p"`
FABRICANTE=`cat "$NOME_BASE"_FABRICANTE.txt | sed -n "$x p"`
NOMEDOHOST=`nmblookup -A $IP | grep 00 | sed -n "1p" | sed "{ s/\t//g; s/\ //g }" | cut -d"<" -f1` > "$NOME_BASE"_HOSTNAME.txt
#Scan de portas de cada IP
echo "Scan de portas no IP: "$IP
nmap -sS $IP | grep open | cut -d" " -f1 > "$NOME_BASE"_PORTS.txt
#Separa as portas do resultado do Scan e os coloca na mesma linha separadas por vírgula
cat "$NOME_BASE"_PORTS.txt | while read LINHA;
do
PORTA=`echo $LINHA | grep tcp | cut -d"/" -f1`
echo -n "$PORTA""," >> "$NOME_BASE"_PORT.txt
done
#O Sed elimina a última vírgula da string de portas gerada e o restante da string tratada é redirecionada para a variável PORTAS
PORTAS=`cat "$NOME_BASE"_PORT.txt 2> /dev/null | sed "{ s/,*$// }"`
echo "$IP"";""$MAC"";""$FABRICANTE"";""$NOMEDOHOST"";""$PORTAS" >> "$NOME_BASE"_COMPILADO.csv
echo "Relatorio sobre Host "$IP" adicionado a base de dados!"
done
mv "$NOME_BASE"_COMPILADO.csv Relatorio_"$NOME_BASE".csv
}
function LimparCache(){
# Essa linha evita que a funcao de erro sem comando nenhum
echo "" /dev/null
# Caso queira apagar os arquivos temporario descomente a proxima linha e a linha "#LimparCache" da function Main()
#rm "$NOME_BASE"*
}
function Main(){
echo "String base:" $NOME_BASE
EncontrarPlacas
EncontrarIPs
ScanearRede
FiltrarDados
#LimparCache
}
Main
Gerador de Pacotes de Instalação
Script para proteção de pastas ou arquivos
Script para atualização de sistemas Debian, Ubuntu e variáveis.
Redundância de links dedicados
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como implementar Raid (0, 1, 5, 6, 10 e 50)
fusermount3 no Ubuntu 25.10 - mantenha o perfil do AppArmor
[Resolvido] dlopen(): error loading libfuse.so.2 AppImages require FUSE to run.
Criação de diretórios e aplicação de restrições de acesso no Linux
Como programar um sistema de controle para distribuições linux em c? (0)
Compartilhar ZEBRA ZD220 na rede (2)
Como programar um software que seja utilizado para coleta de dados em ... (1)









