Commit ac4aa7b6 authored by Serhiy Storchaka's avatar Serhiy Storchaka

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

in uuid.getnode().  Pach by Bruno Cauet.
parent 16e802f4
...@@ -320,6 +320,12 @@ class TestUUID(unittest.TestCase): ...@@ -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()
......
...@@ -356,6 +356,13 @@ def _ifconfig_getnode(): ...@@ -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(): ...@@ -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:
......
...@@ -217,6 +217,7 @@ Pierre Carrier ...@@ -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
......
...@@ -191,6 +191,9 @@ Core and Builtins ...@@ -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().
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment