Issue #22902: The "ip" command is now used on Linux to determine MAC address

in uuid.getnode().  Pach by Bruno Cauet.
This commit is contained in:
Serhiy Storchaka 2014-11-30 20:39:04 +02:00
parent 16e802f4ae
commit ac4aa7b6aa
4 changed files with 19 additions and 2 deletions

View file

@ -320,6 +320,12 @@ class TestUUID(unittest.TestCase):
if node is not None: if node is not None:
self.check_node(node, 'ifconfig') self.check_node(node, 'ifconfig')
@unittest.skipUnless(os.name == 'posix', 'requires Posix')
def test_ip_getnode(self):
node = uuid._ip_getnode()
if node is not None:
self.check_node(node, 'ip')
@unittest.skipUnless(os.name == 'posix', 'requires Posix') @unittest.skipUnless(os.name == 'posix', 'requires Posix')
def test_arp_getnode(self): def test_arp_getnode(self):
node = uuid._arp_getnode() node = uuid._arp_getnode()

View file

@ -356,6 +356,13 @@ def _ifconfig_getnode():
if mac: if mac:
return mac return mac
def _ip_getnode():
"""Get the hardware address on Unix by running ip."""
# This works on Linux with iproute2.
mac = _find_mac('ip', 'link list', [b'link/ether'], lambda i: i+1)
if mac:
return mac
def _arp_getnode(): def _arp_getnode():
"""Get the hardware address on Unix by running arp.""" """Get the hardware address on Unix by running arp."""
import os, socket import os, socket
@ -538,8 +545,8 @@ def getnode():
if sys.platform == 'win32': if sys.platform == 'win32':
getters = [_windll_getnode, _netbios_getnode, _ipconfig_getnode] getters = [_windll_getnode, _netbios_getnode, _ipconfig_getnode]
else: else:
getters = [_unixdll_getnode, _ifconfig_getnode, _arp_getnode, getters = [_unixdll_getnode, _ifconfig_getnode, _ip_getnode,
_lanscan_getnode, _netstat_getnode] _arp_getnode, _lanscan_getnode, _netstat_getnode]
for getter in getters + [_random_getnode]: for getter in getters + [_random_getnode]:
try: try:

View file

@ -217,6 +217,7 @@ Pierre Carrier
Terry Carroll Terry Carroll
Edward Catmur Edward Catmur
Lorenzo M. Catucci Lorenzo M. Catucci
Bruno Cauet
Donn Cave Donn Cave
Charles Cazabon Charles Cazabon
Jesús Cea Avión Jesús Cea Avión

View file

@ -191,6 +191,9 @@ Core and Builtins
Library Library
------- -------
- Issue #22902: The "ip" command is now used on Linux to determine MAC address
in uuid.getnode(). Pach by Bruno Cauet.
- Issue #22960: Add a context argument to xmlrpclib.ServerProxy constructor. - Issue #22960: Add a context argument to xmlrpclib.ServerProxy constructor.
- Issue #22389: Add contextlib.redirect_stderr(). - Issue #22389: Add contextlib.redirect_stderr().