
mac address em python
Outubro 14, 2009Algumas pessoas vez ou outra precisam da informação do mac address da placa de rede para qualquer coisa. No meu caso é para simples criação de logs, onde o mac address e o serial são os identificadores da maquina. Fazer isso através do shellscript não é tão complicado, mas, eu pelo menos, não sou muito fã de como as coisas ficam “organizadas” no shell-script. Então podemos fazer praticamente tudo que o shell faz usando python.
Outro dia estava fuçando como fazer isso, já que minha caminhada em python começou a pouco tempo e eu ainda apanho um bocado, mas para “facilitar” ou disseminar o conhecimento colocarei abaixo as linhas de código que achei em um blog de um colega blogueiro.
Primeiramente em shell, poderiamos simplesmente usar um comando e editar a saida dele usando shell. Da seguinte forma:
$mac=$(ifconfig eth0) && mac=${mac:45:25} && echo $mac >> arquivo.txt
a saida no meu caso foi a seguinte:
00:24:00:b0:e7:00
Mas sinceramente isso não fica tão agradavel de se usar… Pelo menos não para mim…
Então podemos fazer um pequeno script em python um pouco mais trabalhoso organizado.
import socket
fd = socket.socket(socket.AF_PACKET, socket.SOCK_RAW)
fd.bind(('eth0', 9999))
mac = fd.getsockname()[-1]
print ':'.join(['%02x' % ord(n) for n in mac])
O script em python da mesma forma que o shell apresentará a mesma saida, porém as possibilidades são muito maiores do que se pode fazer.
00:24:00:b0:e7:00
OBS1. O script funciona bem em qualquer Linux. Para qualquer outro sistema você tem que saber qual modulo substitui o AF_PACKET.
OBS2. Você pode usar uma interpretação do comando ifconfig ou ipconfig no python como acontece no shell script mas isso não seria muito normal de se fazer.