我有一台安装了 Lemuntu 的 LeMaker 吉他。我的wpa_supplicant.conf
文件如下所示:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="MySSID"
psk="MyPasswd"
}
我的/etc/network/interfaces
文件如下所示:
auto wlan0
iface wlan0 inet dhcp
pre-up wpa_supplicant -B -i wlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf
pre-down killall -q wpa_supplicant
当我启动我的吉他并且 Wi-Fi 路由器已经在运行时,Wi-Fi 连接正常。但是当我启动吉他并打开路由器电源时,它无法连接。我尝试创建每分钟执行一次的 cron 作业dhclient wlan0
,但没有成功。
所以我的问题是,如果我启动吉他后该 Wi-Fi 启动,如何自动连接到该 Wi-Fi。
答案1
解决方案:不带 GUI 的网络管理器。
我尝试了六个使用wpa-supplicant
,iw
和 的教程/etc/network/interfaces
。但它们都不适合我。可能是因为他们根本没有描述他们在做什么。所以我总是遇到这样的情况:它不起作用,没有错误消息,也没有任何方法可以找出问题的根源。
最后我只是尝试安装默认的网络管理器。这恰好是 gnome-network-manager 但没有 GUI 组件 (-> --no-install-recommends
)。
简而言之,解决方案是:
sudo apt install --no-install-recommends network-manager
nmcli connection add ifname wlan0 type wifi ssid MySSID
nmcli connection edit wifi-wlan0
编辑配置文件时,您必须设置 WPA-PSK 和纯文本密码:
nmcli> goto wifi
nmcli 802-11-wireless> set mode infrastructure
nmcli 802-11-wireless> back
nmcli> goto wifi-sec
nmcli 802-11-wireless-security> set key-mgmt wpa-psk
nmcli 802-11-wireless-security> set psk your-plain-text-password
nmcli 802-11-wireless-security> save
nmcli 802-11-wireless-security> quit
重启后即可享受!网络管理员会处理好一切!
如果它抱怨权限,推荐的方法似乎是修改/覆盖
/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy
.我放弃了,sudo
转而使用。如果有人知道一种干净的方法,请告诉我们!
这是一个非常好的指南,但它是德语的:https://wiki.ubuntuusers.de/NetworkManager/NetworkManager_ohne_GUI/
答案2
这是一个示例脚本,用于检查wlan0
stat、连接并通过 dhcp 获取 IP 地址:
/bin/ip link set wlan0 up
if grep -q 0 /sys/class/net/wlan0/carrier
then
killall wpa_supplicant
/sbin/wpa_supplicant -B -i wlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf > /dev/null 2>&1
/sbin/dhclient -r
/sbin/dhclient > /dev/null 2>&1
fi
每分钟运行此脚本的 cron 作业。
* * * * * /path/to/script.sh
编辑:可以用来ping
测试连通性。
/bin/ping -q -c3 8.8.8.8 > /dev/null
if [ $? -ne 0 ]
then
killall wpa_supplicant
/bin/ip link set wlan0 up
/sbin/wpa_supplicant -B -i wlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf > /dev/null 2>&1
/sbin/dhclient -r
/sbin/dhclient > /dev/null 2>&1
fi