我无法从接入点获取 IP 地址。接入点是开放的,但需要通过强制门户登录。
我正在使用 Debian Jessie,并通过终端连接。我使用 i3 和极小的屏幕布局,我大部分时间都在没有窗口管理器的 shell 中度过,因此不需要点击解决方案 :)
我开发了自己的软件和脚本,用于自动连接到我的无线热点。它可以工作,但有时 dhclient 需要的时间太长,无法连接。而且我的连接会随机断开。
这是我的脚本:
wifi.sh
#!/bin/bash
# Bring the card down
ifconfig wlan0 down &&
# Change MAC address
macchanger wlan0 -r &&
# Bring the card back up
ifconfig wlan0 up &&
# Connect to access point
echo 'Connecting to AP ...'
iw wlan0 connect "AP_NAME" &&
# Get an IP address
dhclient wlan0 &&
# Log into AP
echo 'Logging into BTFon ...'
btfon [email protected] mysecretpassword
# Ping Google
ping -c3 google.com
繁體是我用 C 语言开发的一个应用程序,用于将我登录到云中,以便我可以访问互联网。这运行正常,并不是问题的根源。您可以在此处查看源代码:https://github.com/UndergroundLabs/BTFon。不过剧本里没有提到这部分,所以很可能无关。
我检查了,dmesg
但没有任何结果。我可以看到我已与接入点关联,并且已通过身份验证。我没有发现任何错误。
问题似乎发生在dhclient wlan0
。
我以为可能network-manager
正在运行,但是我安装时没有桌面环境,并且xorg
安装i3
了之后,所以network-manager
没有安装 KDE/Gnome 等。
不确定问题是什么,因为在重新安装之前它运行良好。上周末我的硬盘坏了,不得不重新安装 Debian Jessie ... 并重写我的脚本,因为我丢失了所有内容(说来话长)。
对于该问题的可能原因有什么帮助吗?
答案1
dhclient
即使没有收到来自 DHCP 服务器的响应,也会返回 0,然后继续在后台运行。使用选项-1
强制它只尝试一次,并在失败时返回 2。还可以添加-v
以获取更多有用的信息。可能的原因是您需要在使用之前给 AP 一些时间dhclient
。将-timeout
或 添加sleep
到您的脚本中。或者租约数据库因为您正在更改 MAC 而混乱。我会dhclient -r wlan0
在您启动后添加wlan0
。