如果使用Python将Raspberry Pi连接到任何WiFi网络(非Internet必需),请检查状态

时间:2018-05-17 09:33:50

标签: python python-3.x raspberry-pi wifi raspbian

我不想检查它是否具有互联网连接!我只是想检查它是否连接到WiFi网络(我已经在WPA_supplicant文件中给出了它的SSID)..这个网络将无法访问Internet。

3 个答案:

答案 0 :(得分:2)

假设你正在运行某种类型的linux(比如raspbian),你不需要使用Python,最简单的方法是:

iwconfig 2>&1 | grep ESSID

从命令行或shell脚本。如果连接到无线网络,将会输出,否则不输出。如果你想从Python运行它,可以将它包装在subprocess中:

import subprocess
ps = subprocess.Popen(['iwconfig'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
try:
    output = subprocess.check_output(('grep', 'ESSID'), stdin=ps.stdout)
    print(output)
except subprocess.CalledProcessError:
    # grep did not match any lines
    print("No wireless networks connected")

答案 1 :(得分:2)

问题

iwconfig对我不起作用,但是iwgetid对我有用。

我该如何解决这个问题?

代码

import subprocess
ps = subprocess.Popen(['iwgetid'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
try:
    output = subprocess.check_output(('grep', 'ESSID'), stdin=ps.stdout)
    print(output)
except subprocess.CalledProcessError:
    # grep did not match any lines
    print("No wireless networks connected")

答案 2 :(得分:0)

您可以使用以下代码行来检查分配给RPI的IP地址

t="$(ifconfig wlan0 | awk '/inet addr/{print substr($2,6)}')"
echo $t
w=${#t}
echo $w

在此之后使用任何条件检查 例如检查宽度。