1

我试图检查是否有任何无线接口使用 bash 脚本启动。我想我可以通过检查 /proc/net/wireless 中每个接口的 Status 字段来做到这一点。但是,我试图查找对该字段中可能值的参考以及它们的含义,但似乎没有任何结果。有人知道吗?这是解决这个问题的理想方法吗?

4

1 回答 1

2

您将需要检查operstate每个接口以判断它是否是;向上、向下或未知。这是一种使用方法GNU awk

awk '{ split(FILENAME, array, "/"); print array[5] ": " $1 }' $(find /sys/class/net/*/operstate ! -type d)

在我的系统上,这里有一些结果:

eth0: up
lo: unknown
vboxnet0: down
wlan0: up

要仅检查无线接口,您需要在每个接口下检查名为“无线”的文件夹。这是使用GNU awk.

awk -F "/" 'FNR==NR { wire[$5]++; next } { split(FILENAME, state, "/"); if (state[5] in wire && $1 == "up") print state[5] }' <(find /sys/class/net/*/wireless -type d) $(find /sys/class/net/*/operstate ! -type d)

结果:

wlan0

伪代码:

1. Get the directory names of the wireless devices as the 1st argument
2. Split these names on the "/" delimiter
3. Add the 5th column (the name of the wireless device) to an array called 'wire'
4. Now read in the operstates of all network interfaces as the 2nd argument
5. Split the interface filenames on the "/" delimiter to an array called 'state'
6. If the interface is a wireless interface (i.e. if it's in the array called
   wire) and its operstate is "up", print it.
于 2012-10-09T02:06:12.177 回答