如何检查无线网络是否可用

时间:2017-08-26 09:15:53

标签: python networking

我正在编写一个python脚本,我正在监视网络状态。我在Raspberry pi使用Python 2.7。如果网络不可用,脚本首先会检查网络凭据是否仍保存在文件wpa_supplicant.conf (/etc/wpa_supplicant/wpa_supplicant.conf)中。如果没有保存,那么脚本会在文件中写入ssid和密码并运行以下命令启动wlan0连接到wifi:

        ret = subprocess.call(['sudo /sbin/ifup --force wlan0'], shell=True)
        if ret is 0:
            print("Connection successfully")
        else:
            print("Unable to connect")

这将wifi连接到给定的ssid。

现在问题是上面的命令如果成功运行则返回0。但是,让我们说如果此时wifi网络不可用,它仍会显示0.我们如何检测到我们尝试连接的网络不可用。

感谢。

1 个答案:

答案 0 :(得分:0)

接口具有称为管理操作状态的内容。

  • 管理状态(在代码中称为管理状态)表示如果链接是UP / DOWN,则可以在物理链接更改状态或admin shut/no shut时使用CLI(命令链接接口)。

  • 操作状态(在代码中称为 operstate )与协议UP / DOWN状态有关,这在ARP解析且接口获取IP地址时发生。如果管理员状态为DOWN,则运行状态也将下降。这可以使用命令cat /sys/class/net/wlp2s0/operstate进行检查,其中wlp2s0是我的wifi接口。

根据您的需要,您可以使用/sys/class/net/wlp2s0/operstate来查找界面的状态。有关详细信息,请查看此link

以下是我机器上的输出片段:

mdeore@mdeore-Lenovo:~$ awk '{ split(FILENAME, array, "/"); print array[5] ": " $1 }' $(find /sys/class/net/*/operstate ! -type d)
enp1s0: down
lo: unknown
wlp2s0: up