Obter IP e MAC Address da rede inteira salvando em log

Publicado por Rodrigo RARMOR em 12/03/2010

[ Hits: 21.021 ]

 


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

Ajustando data e hora com NTP

fdisk - Visualizando tamanho do disco

Corrigir os erros "5: Input/output error" ou "cache file is corrupted" no Ubuntu

CentOS - Acessando pasta compartilhada do Windows

Iniciando máquina virtual "automaticamente" no VirtualBox

  

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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts