使用 python 控制台命令确定活动 NIC 地址

Determine Active NIC address using python console commands

我正在尝试找到一个活动的 NIC,一个活动的 NIC 是命令将为我 return UP 的一个。

在我的命令中:

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

我 return UP

在另一个命令中,我输入:

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

我得到一个向下的值 总的来说,我有 4 个 eth。我基本上必须使用命令来确定 UP 或 DOWN

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

我希望能够编写一个程序,在其中我能够return 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 循环中添加 which eth 编号。也许有更好的方法来解决这个问题。

在此先感谢您的帮助

x 是一个包含值的变量:1 或 2 或 3 或 4。 您将 x 视为字符串的代码片段。 此外,代码片段尝试将单引号括在产生错误的单引号内。

如下修改应该可以了。

此外,上述代码中存在语法错误 - 'if' 子句后缺少一个冒号。

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)