我需要编写一个 shell 脚本,连接到两个可用的 Wi-Fi 连接之一。一个是不安全的连接,另一个是安全的连接。我的问题分为两部分:
当我连接到安全连接时,如何从命令行(或通过执行 shell 脚本)连接到不安全(未加密且不需要密码)的连接?
我按照步骤进行操作http://www.ubuntugeek.com/how-to-troubleshoot-wireless-network-connection-in-ubuntu.html用于不安全的连接。我把所有命令放在一个脚本中并执行它(我确保接口名称和 essid 是正确的)
sudo dhclient -r wlan0 sudo ifconfig wlan0 up sudo iwconfig wlan0 essid "UAPublic" sudo iwconfig wlan0 mode Managed sudo dhclient wlan0
但什么也没有发生:我没有断开与当前网络的连接并连接到新网络。
当我想要连接到安全的 Wi-Fi 网络时,我了解https://askubuntu.com/a/138476/70665我需要使用
wpa_supplicant
。但是当我通过 UI 连接时,我在界面中输入了很多详细信息- 安全性:wpa 和 wpa2 企业版
- 身份验证:PEAP
- CA 证书:Equifax...
- PEAP 版本:自动
- 内部身份验证:MSCHAPv2
- 用户名 :
- 密码 :
如何使用 wpa_supplicant 在命令行中提及所有这些详细信息?conf 文件
network={
ssid="ssid_name"
psk="password"
}
对我不起作用。
答案1
我假设您正在使用 Ubuntu 桌面,因为您没有另行指定。
您可以通过在 中创建文件来创建由网络管理器管理的无线网络配置/etc/NetworkManager/system-connections
。查看现有文件以了解格式。
一旦创建连接,您就可以使用命令nmcli
从命令行管理 NetworkManager,执行诸如启用、禁用和查询连接等操作。
顺便说一句,系统测试工具(复选框)有一个脚本可以做到这一点:创建一个连接并启用它,并使用您在命令行中提供的参数。
例如,这将创建与开放的“鸭子”网络的连接:
sudo /usr/share/checkbox/scripts/create_connection duck
这将使用 WPA2 安全性创建网络连接,密码为“wings”:
sudo /usr/share/checkbox/scripts/create_connection -S wpa -K wings duck
该脚本是用 Python 编写的,因此您应该可以轻松查看并调整以满足您的需求。
脚本的帮助是这样说的:
Usage: create_connection [options] SSID
Options:
-h, --help show this help message and exit
-S SECURITY, --security=SECURITY
The type of security to be used by the connection.
One of wpa and wep. No security will be used if
nothing is specified.
-K KEY, --key=KEY The encryption key required by the router.
-U UUID, --uuid=UUID The uuid to assign to the connection for use by
NetworkManager. One will be generated if not
specified here.
-R RETRIES, --retries=RETRIES
The number of times to attempt bringing up the
connection until it is confirmed as active.
-I INTERVAL, --interval=INTERVAL
The time to wait between attempts to detect the
registration of the connection.