Endereço da placa ETH via Python

*linux*

import socket
import fcntl
import string
import sys
import exceptions

def getINTF():
f = open(“/proc/net/dev”)
ret = []
iflist = f.readlines()
f.close()
for line in iflist:
if ‘:’ not in line:
continue
words=string.split(line,’:’)
ifname, rest = words[0],words[1:]
ifname = string.strip(ifname)
ret.append(ifname)
return ret

def hexy(n):
return “%02x” % (ord(n))

def getMAC(ifname):
SIOCGIFHWADDR = 0x8927 # magic number
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ifname = string.strip(ifname)
ifr = ifname + ”*(32-len(ifname))
try:
r= fcntl.ioctl(s.fileno(),SIOCGIFHWADDR,ifr)
addr = map(hexy,r[18:24])
ret = (‘:’.join(map(str, addr)))
except IOError, e:
ret = ”
return ret

list = getINTF()
for i in list:
print i, getIP(i), getMAC(i), getUP(i)

No comments yet

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: