-->

Determine Active NIC address using python console

2019-08-16 08:33发布

问题:

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)