我使用以下函数来检查接口是否存在:
def status(interface):
print("Checking VPN Status...")
for line in open('/proc/net/dev'):
if interface in line:
proof = line.split(" ")[1].split()
print(proof)
return proof
这是我的/proc/net/dev文件的副本:
$ cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
ens33: 1480355767 23538625 13 1 0 0 0 0 752613935 44655037 0 0 0 0 0 0
lo: 548140418 2567168 0 0 0 0 0 0 548140418 2567168 0 0 0 0 0 0
tun0: 17067 85 0 0 0 0 0 0 10819 114 0 0 0 0 0 0
如果我调用状态(‘ns’(,我会得到正确的输出:
['ens33:]
但如果我调用状态("un"(,我完全希望它能起作用,我会得到:
[]
知道这里发生了什么吗?
tun0
行以两个空格开头,因此line.split(" ")
返回['', '', 'tun0:', ... ]
,这意味着元素1本身就是一个空格。
如果只使用纯split()
,它将不会保留空白,只返回['tun0:']
。(在这种情况下,您需要访问元素0而不是元素1。(