如何在不使用 ifconfig 的情况下确定接口 RUNNING 状态?

如何在不使用 ifconfig 的情况下确定接口 RUNNING 状态?

一些背景:有时我的 wi-fi 连接突然断开,所以我输入sudo ifconfig wlan0并检查单词RUNNING。相应的行如下所示:

UP BROADCAST RUNNING MULTICAST  [...]

当连接断开时,没有任何RUNNING设置;我无法连接到任何东西,但接口仍然可用。

我正在考虑编写一个脚本来定期检查状态RUNNING。要提取该字符串,请使用awk类似:sudo ifconfig wlan0 | awk '/RUNNING/ {print $3}'

是否有另一种方法,例如检查文件系统而不是解析 ifconfig 的输出?

我正在使用 Debian Wheezy。

谢谢。


更多信息:

好的,刚刚做了一些研究并消除了一些概念上的混乱。

UP标志RUNNING不同。第一个表示接口“当前已初始化”[1],即“系统为接口分配了资源”[2]——它没有说明任何有关数据包传输的信息。

RUNNING标志实际上指示正在发送和接收数据包。显然,如果以太网电缆被拔掉,这个标志就会消失。

[1]https://docs.oracle.com/cd/E19253-01/816-4554/ipconfig-141/index.html

[2]https://stackoverflow.com/questions/11679514/what-is-the-difference- Between-iff-up-and-iff-running

我不知道我的(或任何)无线连接发生了什么,但结果是相同的:接口保持打开状态(我的笔记本电脑中的 Wi-Fi LED 灯保持亮起),而连接完全丢失。

答案1

您可以检查以下文件来监控 wi-fi 连接状态,而不是使用类似ifconfig -s或 之类的命令:netstat -i

/sys/class/net/wlan0/flags指示设备是打开还是关闭。它没有告诉任何有关数据包传输的信息,因此检查连接是否正常工作并没有真正的用处。它的内容/值是0x1003(开)和0x1002(关)。

/sys/class/net/wlan0/operstate指示连接是否可操作(正在发送和接收数据包)。该RUNNING文件相当于ifconfig.它的值为updown

/sys/class/net/wlan0/carrier工作原理就像/sys/class/net/wlan0/operstate.它的值是1(上)和0(下)。如果设备关闭,该文件为空。

相关内容