我在python中使用控制台命令,但是,它没有输出我想要的值。
路径是:
#ifconfig -a | grep "HWaddr"
从这个命令我得到:
eth0 Link encap:Ethernet HWaddr 30:9E:D5:C7:1z:EF
eth1 Link encap:Ethernet HWaddr 30:0E:95:97:0A:F0
我需要使用控制台命令来检索该值,所以这是我目前为代码所做的:
def getmac():
mac=subprocess.check_output('ifconfig -a | grep "HWaddr"')
print "%s" %(mac)
我基本上只想检索30:0E:D5:C7:1A:F0的硬件地址。我上面的代码没有检索到它。我的问题是如何使用控制台命令来获取我想要的值。
提前致谢。
答案 0 :(得分:1)
Linux中获取MAC地址最强大,最简单的方法是从sysfs
安装/sys
。{/ p>
对于界面etho
,位置为/sys/class/net/eth0/address
;同样地,对于eth1
,它将是/sys/class/net/eth1/address
。
% cat /sys/class/net/eth0/address
74:d4:35:XX:XX:XX
所以,您也可以在python
中阅读该文件:
with open('/sys/class/net/eth0/address') as f:
mac_eth0 = f.read().rstrip()
答案 1 :(得分:1)
引自here。
Python 2.5包含一个uuid实现(至少在一个版本中)需要mac地址。您可以轻松地将mac查找功能导入到您自己的代码中:
from uuid import getnode as get_mac
mac = get_mac()
返回值是mac地址为48位整数。
答案 2 :(得分:0)
import subprocess
def getmac(command):
return subprocess.check_output(command, shell=True)
command = "ifconfig -a | grep HWaddr"
print "%s" %(getmac(command).split()[9])
# or print out the entire list to see which index your HWAddr corresponds to
# print "%s" %(getmac(command).split())
或根据用户heemayl,
command = "cat /sys/class/net/eth1/address"
print "%s" %(getmac(command))
注意:
1.根据Python docs,不建议使用shell=True
2.与在Python中读取文件的常规方法相比,这并不是那么有效。
您也可以返回
subprocess.check_output(command)
但是,在上述情况下,您可能会获得OSError
或CalledProcessError(retcode, cmd, output=output)
,具体取决于您是否将命令作为列表传递,如果您明确提及您的python路径,则可以解决此问题this