问题
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