如何解析getmac命令的输出?

问题描述 投票:1回答:1

经过研究,我发现在windows下获取以太网MAC地址最好的方法是 "getmac "命令。(python的getmac模块并不能产生同样的结果!)。现在我想在python代码中使用这个命令来获取MAC地址。我想出我的代码应该以这样的方式开始。

import os
if sys.platform == 'win32':
    os.system("getmac")
    do something here to get the first mac address that appears in the results

这里是一个输出的例子

Physical Address    Transport Name                                            
=================== ==========================================================  
1C-69-7A-3A-E3-40   Media disconnected                                        
54-8D-5A-CE-21-1A   \Device\Tcpip_{82B01094-C274-418F-AB0A-BC4F3660D6B4}      

我最后想得到1C-69-7A-3A-E3-40最好不要有破折号.先谢谢你。

python windows mac-address
1个回答
0
投票

两件事情。首先,我建议你想办法更优雅地获取mac地址。这个问题的答案似乎使用了uuid模块。,这或许是一个不错的跨平台解决方案。

话虽如此如果你想继续解析系统调用的输出,我推荐使用Python的 子流程模块. 比如说。

import subprocess

output_of_command = subprocess.check_output("getmac")

这将运行 getmac 而该命令的输出将进入一个变量。从那里,你可以解析这个字符串。

下面是你如何从该字符串中提取mac地址。

# I'm setting this directly to provide a clear example of the parsing, separate
# from the first part of this answer.

my_string = """Physical Address Transport Name
=================== ==========================================================
1C-69-7A-3A-E3-40 Media disconnected
54-8D-5A-CE-21-1A \Device\Tcpip_{82B01094-C274-418F-AB0A-BC4F3660D6B4}"""

my_mac_address = my_string.rsplit('=', 1)[-1].split(None, 1)[0]

第一个分割是一个 右旋. 它用'='字符将字符串分解,一次,从字符串的末端开始。然后,我用空格分割输出,限制为一次分割,并取第一个字符串值。

不过,我还是不鼓励用这种方法来获取mac地址。解析命令行脚本的人类可读输出很少是可取的,因为输出可能会出乎意料地与你的脚本所期望的不同。你肯定可以用更稳健的方式来获取mac地址。

© www.soinside.com 2019 - 2024. All rights reserved.