Pequeno gerador de relatório da rede (CSV)
Publicado por Dix (última atualização em 28/11/2016)
[ Hits: 9.152 ]
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
Script simple backup em Fita DAT
Minha solução para monitorar múltiplos termômetros no Slackware
Jogo de labirinto feito em shell script
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Acessar ftp por nome ao invés de ip [RESOLVIDO] (5)
Estou com sede em aprender sobre o nosso querido Linux. (2)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta