从命令行连接到无线网络

从命令行连接到无线网络

我需要编写一个 shell 脚本,连接到两个可用的 Wi-Fi 连接之一。一个是不安全的连接,另一个是安全的连接。我的问题分为两部分:

  1. 当我连接到安全连接时,如何从命令行(或通过执行 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
    

    但什么也没有发生:我没有断开与当前网络的连接并连接到新网络。

  2. 当我想要连接到安全的 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.

相关内容