Pequeno gerador de relatório da rede (CSV)
Publicado por Dix (última atualização em 28/11/2016)
[ Hits: 9.170 ]
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
Instalação do FreeRock GNOME unstable
Backup simples com log de resultado
newchangelog - Script para gerar changelog.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Honey Testing Lab: FARE LABS Pvt. Ltd (0)
Honey Testing Lab: FARE LABS Pvt. Ltd (0)
Melhorando a precisão de valores flutuantes em python[AJUDA] (11)
GLPI - Configuração de destinatário com conta Microsoft Exchange (0)