我需要编写一些脚本来确定 Wi-Fi 连接是否成功。
我的 Wi-Fi 配置为/etc/wpa_supplicant.conf。
我知道如何将 SSID 和 PSK 添加到该文件并连接到它。
我的意思是这样的:
variable ssid = "test"
variable psk = "psk"
try to connect to {ssid, psk}
if(connection == True) {
add {ssid, psk} to the /etc/wpa_supplicant.conf
else {
echo("PSK is wrong, try it again.")
我不知道该怎么办尝试连接到 {ssid, psk}。
答案1
#!/bin/bash
killall wpa_supplicant
sleep 1
wpa_supplicant -i wlan0 -c<(wpa_passphrase "$1" "$2") -B \
-C /var/run/wpa_supplicant \
-f /etc/wpa_supplicant.log
sleep 3
wpa_status=$(wpa_cli status | grep wpa_state | cut -d"=" -f2)
if test "$wpa_status" = "COMPLETED"
then
echo "$wpa_status"
wpa_passphrase "$1" "$2" >> /etc/wpa_supplicant.conf
else
echo " $wpa_status : Try again"
exit 1
fi
用法(作为 root):
# ./script ssid password
这-f
将创建一个日志文件,可以使用它代替命令来获取接口wpa_cli status
的状态。wlan0
wpa_passphrase
会将正确的“ssid”和“密码”保存到/etc/wpa_supplicant.conf
.
应/etc/wpa_supplicant.conf
包含:
ctrl_interface=/run/wpa_supplicant
update_config=1
wlan0
如果您需要连接,请分配 IP 地址( dhclient
、dhcpcd
、ip
...)
@TSJNachos117评论:您可以将
grep
和替换cut
为awk
:
wpa_cli status | awk -F = '{if($0 ~ /wpa_state/) print $2}'