Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中使用控制台命令_Python_Linux_Console_Command_Nic - Fatal编程技术网

在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

我在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地址最可靠、最简单的方法是从安装在
/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中使用控制台命令,因此答案是这样的。我已经编辑了我的答案,以包括这一事实。