Determine Active NIC address using python console commands

自闭症网瘾萝莉.ら 提交于 2019-12-25 09:11:09

问题


I am trying to find an active NIC, an active NIC is one where the command wil return UP for me.

In my command:

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

I am returned a value of UP

In another command, I type:

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

I get a value of DOWN Overall I have 4 eth's. I basically have to use the command to determine UP or DOWN

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

I want to be able to write a program where I will be able to return the eth[0|1|2|3] value that is UP.

So far this is what I have:

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)

When I do run this code, it tells me there is an error:

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

I'm just not sure how to add in the which eth number from the for loop. Maybe there is a better way to approach this.

Thanks in advance for the help


回答1:


x is a variable containing the value: 1 or 2 or 3 or 4. The code-snippet you've treats x as a string. Also, the code-snippet tries to enclose single quotes within single quotes generating the error.

Modify as below and it should work.

Also, there's a syntax error in the above code - you're missing a colon after the 'if' clause.

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)


来源:https://stackoverflow.com/questions/37716294/determine-active-nic-address-using-python-console-commands

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!