Obter IP e MAC Address da rede inteira salvando em log

Publicado por Rodrigo RARMOR em 12/03/2010

[ Hits: 17.247 ]

 


Obter IP e MAC Address da rede inteira salvando em log



Após quebrar a cabeça e testar várias opções mirabolantes para obter todos os IPs, nomes e MACs da rede, cheguei ao seguinte resultado, utilizando nmap e egrep:

sudo nmap -sP 192.168.1-10.1-255 | egrep -i '(Host|MAC)' >> ipmac.txt

Observações:
  • -sP - para efetuar somente um ping com o nmap
  • egrep -i - procura no resultado do comando nmap em maiúsculas ou minúsculas os nomes Host e MAC
  • >> ipmac.txt - salva o resultado do comando em um arquivo

O que não consegui foi salvar o resultado do comando com o host e o MAC em uma mesma linha e testar esta opção para também procurar em hosts com o firewall ativado.

Espero ter ajudado.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Como gravar imagem ISO em DVD via linha de comando

Retirar todos os acentos de um arquivo com sed - via terminal

Guia rápido de uso do APT

Erro "BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery" no Solus [Resolvido]

Recuperando apt-get após "falha de segmentação"

  

Comentários
[1] Comentário enviado por valdineisantos em 12/03/2010 - 12:02h

Ficou bacana o seu script. Agora quanto a colocar tudo em um linha deve ser tranquilo fazer em shell puro ou mesmo com awk... mas como estou migrando essas ações simples para python até porque python é bem mais facil e bonito segue o que você queria.

=================================
#! /bin/env python
#!-*- coding: utf-8 -*-

from commands import getstatusoutput

logFile='ipmac.txt'

nets='192.168.200.1-255'

command="sudo nmap -sP %s | egrep -i '(Host|MAC)' >> %s" % (nets, logFile)

status, output = getstatusoutput(command)

newLines = ''
if int(status) == 0:
print 'ok'
for line in file(logFile).readlines():
if 'Host ' in line:
newLines += line.rstrip()+" "
else:
newLines += line.strip()+"\n"
else:
print "Problema com o comando nmap"
print output

FILE = open(logFile, 'w')
FILE.writelines(newLines)
FILE.close()
=============================
Se o vol não respeitar as identações não vai funcionar. Veja aqui http://pastebin.com/W4gXkM2K este é funcional

Valdinei dos Santos
http://valdineidossantos.com/
http://twitter.com/valdineisantos/


Abraços.

[2] Comentário enviado por batista em 12/03/2010 - 12:57h

Otima dica. Algumas vezes precisei dessa solucao e era complicado de encontrar...

[3] Comentário enviado por /bin/laden em 12/03/2010 - 18:00h

O meu ficou: "Como obter o MAC-Address e o IP..."

nmap -sP 192.168.1.0/24 | egrep -i '(Host|MAC)' | sed -e 'N' -e 's/\n/ /' >> mac_ip

[4] Comentário enviado por reiload em 19/03/2015 - 10:23h

Muito bom o post, queria saber como ficaria o contrário pegar o ip de um MAC conhecido?



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts