python - 在 python 中使用控制台命令

标签 python linux console command nic

我在 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 的硬件地址。我上面的代码没有检索到它。我的问题是如何使用控制台命令来获取我想要的值。

提前致谢。

最佳答案

在 Linux 中获取 MAC 地址的最可靠和最简单的方法是从 sysfs 获取它,安装在 /sys 上。

对于接口(interface) 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()

关于python - 在 python 中使用控制台命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37692935/

相关文章:

python - 如何在 Tornado 应用程序中与 RabbitMQ(鼠兔库)通信

linux - 更改默认的PyCharm图标

linux - 如何在 Dockerfile 中编写 Linux 命令

java在控制台中绘制图形或树

Python:比较列表中的元素并打印具有最大匹配计数的元素

python - 不在 MySQL 表中插入值

c# - 在测试设置和拆卸中重定向 Console.Out

java - Java:如何将控制台输出用于条件语句

python - Pandas:如何在 DataFrame 中按行比较列表的列与 Pandas(不是 for 循环)?

linux - 在嵌入式 Linux 上安全写入紧凑型闪存