在python中使用控制台命令
我在python中使用控制台命令,但是,它没有输出我想要的值 路径是:在python中使用控制台命令,python,linux,console,command,nic,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=su
#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地址最可靠、最简单的方法是从安装在
/sys
上的sysfs
获取MAC地址
对于接口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
中读取该文件:
以open('/sys/class/net/eth0/address')作为f的:
mac_eth0=f.read().rstrip()
在Linux中,获取MAC地址最可靠、最简单的方法是从安装在/sys
上的sysfs
获取MAC地址
对于接口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
中读取该文件:
以open('/sys/class/net/eth0/address')作为f的:
mac_eth0=f.read().rstrip()
从中引用
Python2.5包含一个uuid实现(至少在一个版本中)需要mac地址。您可以轻松地将mac查找功能导入到自己的代码中:
from uuid import getnode as get_mac
mac = get_mac()
返回值是mac地址,为48位整数。引用自
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())
Python2.5包含一个uuid实现(至少在一个版本中)需要mac地址。您可以轻松地将mac查找功能导入到自己的代码中:
from uuid import getnode as get_mac
mac = get_mac()
返回值是mac地址,为48位整数
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.根据
2.与Python中读取文件的常规方法相比,这没有那么有效 你也可以回来
subprocess.check_output(command)
但是,在上述情况下,您可能会得到一个OSError
或一个调用的进程错误(retcode,cmd,output=output)
,这取决于您是否以列表形式传递命令,如果您按照
或者根据用户heemayl
command = "cat /sys/class/net/eth1/address"
print "%s" %(getmac(command))
注意:1.根据
2.与Python中读取文件的常规方法相比,这没有那么有效 你也可以回来
subprocess.check_output(command)
但是,在上述情况下,您可能会得到一个
OSError
或一个调用的进程错误(retcode,cmd,output=output)
,这取决于您是否以列表形式传递命令,如果您按照明确提到python路径,这一问题就可以得到解决,但它不会打印出值still@Nikkibee您确定使用了正确的接口名称吗?首先检查一下直接在terminal中运行命令。@Nikkibee:heemayl的代码只获取信息,不打印信息。我已经尝试过了,但它没有打印出值still@Nikkibee您确定使用了正确的接口名称吗?首先检查一下直接在terminal中运行命令。@Nikkibee:heemayl的代码只获取信息,不打印信息。与在Python文件中读取文件的常规方法相比,在子进程中使用cat
读取(伪)文件是非常低效的。当然它没有那么高效!OP希望在python中使用控制台命令,因此答案是这样的。我已经编辑了我的答案以包含这一事实。与在Python文件中读取文件的常规方法相比,在子进程中使用cat
读取(伪)文件是非常低效的。当然它没有那么高效!OP希望在python中使用控制台命令,因此答案是这样的。我已经编辑了我的答案,以包括这一事实。