cpython: Issue #22902: The "ip" command is now used on Linux to determine MAC address
![](https://secure.gravatar.com/avatar/8ac615df352a970211b0e3d94a307c6d.jpg?s=120&d=mm&r=g)
https://hg.python.org/cpython/rev/64bb01bce12c changeset: 93669:64bb01bce12c parent: 93666:f385bc6e6e09 user: Serhiy Storchaka <storchaka@gmail.com> date: Sun Nov 30 20:39:04 2014 +0200 summary: Issue #22902: The "ip" command is now used on Linux to determine MAC address in uuid.getnode(). Pach by Bruno Cauet. files: Lib/test/test_uuid.py | 6 ++++++ Lib/uuid.py | 11 +++++++++-- Misc/ACKS | 1 + Misc/NEWS | 3 +++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_uuid.py b/Lib/test/test_uuid.py --- a/Lib/test/test_uuid.py +++ b/Lib/test/test_uuid.py @@ -321,6 +321,12 @@ 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') def test_arp_getnode(self): node = uuid._arp_getnode() if node is not None: diff --git a/Lib/uuid.py b/Lib/uuid.py --- a/Lib/uuid.py +++ b/Lib/uuid.py @@ -356,6 +356,13 @@ if 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(): """Get the hardware address on Unix by running arp.""" import os, socket @@ -538,8 +545,8 @@ if sys.platform == 'win32': getters = [_windll_getnode, _netbios_getnode, _ipconfig_getnode] else: - getters = [_unixdll_getnode, _ifconfig_getnode, _arp_getnode, - _lanscan_getnode, _netstat_getnode] + getters = [_unixdll_getnode, _ifconfig_getnode, _ip_getnode, + _arp_getnode, _lanscan_getnode, _netstat_getnode] for getter in getters + [_random_getnode]: try: diff --git a/Misc/ACKS b/Misc/ACKS --- a/Misc/ACKS +++ b/Misc/ACKS @@ -217,6 +217,7 @@ Terry Carroll Edward Catmur Lorenzo M. Catucci +Bruno Cauet Donn Cave Charles Cazabon Jesús Cea Avión diff --git a/Misc/NEWS b/Misc/NEWS --- a/Misc/NEWS +++ b/Misc/NEWS @@ -191,6 +191,9 @@ 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 #22389: Add contextlib.redirect_stderr(). -- Repository URL: https://hg.python.org/cpython
participants (1)
-
serhiy.storchaka