Obter IP e MAC Address da rede inteira salvando em log

Publicado por Rodrigo RARMOR em 12/03/2010

[ Hits: 18.015 ]

 


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

Shell script para criar VMs no KVM

Conversão de encodings

Geração automática de relatórios do Sarg

Guia de bolso com os principais comandos Linux

Tocando CDs de áudio via cdda2wav

  

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