2016-06-09 40 views
0

我试图找到一个活动网卡,积极NIC是一个在西港岛线的命令返回为我说话。使用python控制台确定活动的网卡地址命令

在我的命令:

# cat /sys/class/net/eth0/operstate 

我回到UP

的值在另一个命令,I型:

# cat /sys/class/net/eth1/operstate 

我得到了 的价值总体而言,我有4个eth。我基本上必须使用命令来确定UP或DOWN

/sys/class/net/eth[0|1|2|3]/operstate = up | down 

我希望能够编写一个程序,其中,我将能够返回ETH [0 | 1 | 2 | 3]值,该值是UP 。

到目前为止,这是我:

mylist= [0,1,2,3] 
for x in mylist: 
     with open('/sys/class/net/'x'/operstate') as f: 
       mac_eth0= f.read().rstrip() 
     if mac_eth0 == "up" 
       print "it is %s" %(mac_eth0) 

当我运行这段代码,它告诉我,有一个错误:

File "tes.py", line 5 
    with open('/sys/class/net/'x'/operstate') as f: 
          ^
Syntax Error: invalid syntax 

我只是不知道如何添加在for循环中的哪个eth编号中。也许有更好的方法来解决这个问题。

预先感谢您的帮助

回答

0

x表示包含值的变量:1或2或3或4所述的 代码片断你已经对待x作为一个字符串。 此外,代码段会尝试将单引号括起来,生成错误的单引号内。

修改如下,它应该工作。

此外,还有在上面的代码中有语法错误 - 你的“如果”条款后失踪冒号。

mylist= [0,1,2,3] 
for x in mylist: 
     with open('/sys/class/net/{}/operstate'.format(x)) as f: 
       mac_eth0= f.read().rstrip() 
     if mac_eth0 == "up": 
       print "it is %s" %(mac_eth0)