hmmm - i don't read too much python but this looks like shelling out:
def getmacs_ifconfig():
"""parses the output of unix ifconfig to find mac addresses"""
lines = os.popen("ifconfig", "r").readlines()
headerlines = [line for line in lines if line and not
line[:1].isspace()]
for line in headerlines:
parts = line.split()
ifname = parts[0]
if 'HWaddr' in parts:
hwpart = parts.index('HWaddr')
if hwpart+1 < len(parts):
mac = parts[hwpart+1]
yield mac
def getmacs_ipconfig():
"""parses the output of windows ipconfig to find MAC addresses"""
lines = os.popen("ipconfig /all", "r").readlines()
for line in lines:
if line and not line[:1].isspace():
header = line
ipaddress, mac = None, None
elif line.strip():
if line.strip().startswith("IP Address") and ":" in line:
ipaddress = line.split(":", 1)[1].strip()
if mac:
yield mac
ipaddress, mac = None, None
if line.strip().startswith("Physical Address") and ":" in line:
mac = line.split(":", 1)[1].strip()
if ipaddress:
yield mac
ipaddress, mac = None, None
you are right that's it's more complete though! if anyone wants to add a test for their platform porting using this lib as 'doc' i'm happy to add it
Covers pretty much every which way to get the info without shelling out.
Regards,
Dan
hmmm - i don't read too much python but this looks like shelling out:
def getmacs_ifconfig():
"""parses the output of unix ifconfig to find mac addresses"""
lines = os.popen("ifconfig", "r").readlines()
headerlines = [line for line in lines if line and not
line[:1].isspace()]
for line in headerlines:
parts = line.split()
ifname = parts[0]
if 'HWaddr' in parts:
hwpart = parts.index('HWaddr')
if hwpart+1 < len(parts):
mac = parts[hwpart+1]
yield mac
def getmacs_ipconfig():
"""parses the output of windows ipconfig to find MAC addresses"""
lines = os.popen("ipconfig /all", "r").readlines()
for line in lines:
if line and not line[:1].isspace():
header = line
ipaddress, mac = None, None
elif line.strip():
if line.strip().startswith("IP Address") and ":" in line:
ipaddress = line.split(":", 1)[1].strip()
if mac:
yield mac
ipaddress, mac = None, None
if line.strip().startswith("Physical Address") and ":" in line:
mac = line.split(":", 1)[1].strip()
if ipaddress:
yield mac
ipaddress, mac = None, None
you are right that's it's more complete though! if anyone wants to add a test for their platform porting using this lib as 'doc' i'm happy to add it
Yes, that's all I meant - that it had a bunch of alternative implementations.
ara.t.howard wrote:
line for line in lines if line and not line[:1].isspace()
Boy, that's readable.
-Dana
···
--
Dana Merrick - System Administrator
Integrated Computer Solutions, Inc.
54B Middlesex Tpke, Bedford, MA 01730
617.621.0060 x112 - http://www.ics.com