我需要确定我设备的 MAC(硬件)地址,即用于 wifi 的地址。我在 Android 设备上使用 Termux,尽管答案可能更普遍。
我正在使用 python,但任何 bash 也可以。
在某些 2017 年的设备上,以下功能曾经有效:
import subprocess
result = subprocess.run(['ip','link'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
rc,so, se = result.returncode, result.stdout, result.stderr
assert not rc
ipl = re.split('\n[^ ]+ ', so, re.MULTILINE)
wlanl = [L for L in ipl if L.startswith('wlan0')]
assert wlanl
HWadd = re.findall('link/ether (.*?) ',wlanl[0])[0].lower()
但是,这在 2019 年的新设备上奇怪地失败了(我无法让 re.split 像我预期的那样工作)。
相反,我现在有一个几乎同样笨拙的替代方案:
import subprocess
result = subprocess.run(['ip','link'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
rc,so, se = result.returncode, result.stdout, result.stderr
assert not rc
ipl = re.findall('\n[0-9]+: wlan0:.*?\n +link/ether ([^\n]*?) .*?\n', so, re.MULTILINE+ re.DOTALL)
assert ipl
HWadd = ipl[0].lower()
有没有更可靠的方法从某处的操作系统中提取这些信息?
顺便说一句,使用termux-wifi-connectioninfo
给出:
"mac_address": "02:00:00:00:00:00"