如何在Ubuntu Linux中从终端连接到WiFi
在本教程中,我们将学习如何从Ubuntu中的终端连接到无线网络。
从Ubuntu中的终端连接到WiFi
使用Ubuntu桌面时很容易,因为我们可以使用GUI轻松地做到这一点。当我们使用Ubuntu服务器并仅限于命令行时,情况会有所不同。
Ubuntu使用Netplan实用程序轻松配置网络。在Netplan中,使用网络接口的描述创建YAML文件,并在netplan命令行工具的帮助下生成所有必需的配置。
让我们看看如何使用Netplan从终端连接到无线网络。
步骤1:识别无线网络接口名称
有几种方法可以识别网络接口名称。我们可以使用ip命令,不建议使用的ipconfig命令或者检查此文件:
ls /sys/class/net
这应该为我们提供所有可用的网络接口(以太网,wifi和环回)。无线网络接口名称以" w"开头,通常类似于wlanX,wlpxyz。
theitroad@localhost:~$ ls /sys/class/net eth0 lo wlan0
记下该接口名称。我们将在下一步中使用它。
步骤2:使用wifi接口详细信息编辑Netplan配置文件
Netplan配置文件位于/ etc / netplan目录中。如果检查此目录的内容,应该会看到01-network-manager-all.yml或者50-cloud-init.yaml之类的文件。
如果是Ubuntu服务器,则应具有cloud-init文件。对于台式机,它应该是网络管理器文件。
Linux桌面上的网络管理器允许我们选择无线网络。我们可以在其配置中对WLAN接入点进行硬编码。在某些情况下(例如暂停),这会在连接自动断开的情况下为我们提供帮助。
无论是哪个文件,都可以打开以进行编辑。我希望我们有点熟悉Nano编辑器,因为Ubuntu已预装了它。
sudo nano /etc/netplan/50-cloud-init.yaml
YAML文件对空格,缩进和对齐非常敏感。不要使用制表符,而是在出现缩进的地方使用4个(或者2个,在YAML文件中已经使用过的)空格。
基本上,我们必须在引号中添加以下行,以及接入点名称(SSID)及其密码(通常):
wifis: wlan0: dhcp4: true optional: true access-points: "SSID_name": password: "WiFi_password"
再次,保持对齐方式如我所示,否则YAML文件将不会被解析,并且将引发错误。
完整配置文件可能如下所示:
# This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disable cloud-init's # network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled} network: ethernets: eth0: dhcp4: true optional: true version: 2 wifis: wlan0: dhcp4: true optional: true access-points: "SSID_name": password: "WiFi_password"
我感到奇怪的是,尽管有消息说更改不会在实例重新启动后持续存在,但它仍然有效。
无论如何,请使用以下命令生成配置:
sudo netplan generate
现在应用此:
sudo netplan apply
如果幸运的话,我们应该已经连接了网络。尝试ping网站或者运行apt update命令。
但是,事情可能不会那么顺利,我们可能会看到一些错误。如果是这样,请尝试一些额外的步骤。
可能的故障排除
使用netplan apply命令时,可能会在输出中看到如下所示的错误:
Failed to start netplan-wpa-wlan0.service: Unit netplan-wpa-wlan0.service not found. Traceback (most recent call last): File "/usr/sbin/netplan", line 23, in <module> netplan.main() File "/usr/share/netplan/netplan/cli/core.py", line 50, in main self.run_command() File "/usr/share/netplan/netplan/cli/utils.py", line 179, in run_command self.func() File "/usr/share/netplan/netplan/cli/commands/apply.py", line 46, in run self.run_command() File "/usr/share/netplan/netplan/cli/utils.py", line 179, in run_command self.func() File "/usr/share/netplan/netplan/cli/commands/apply.py", line 173, in command_apply utils.systemctl_networkd('start', sync=sync, extra_services=netplan_wpa) File "/usr/share/netplan/netplan/cli/utils.py", line 86, in systemctl_networkd subprocess.check_call(command) File "/usr/lib/python3.8/subprocess.py", line 364, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['systemctl', 'start', '--no-block', 'systemd-networkd.service', 'netplan-wpa-wlan0.service']' returned non-zero exit status 5.
wpa_supplicant服务可能未运行。运行以下命令:
sudo systemctl start wpa_supplicant
再次运行netplan应用。如果能很好地解决问题。否则,请使用以下命令关闭Ubuntu系统:
shutdown now
再次启动Ubuntu系统,登录并再次生成并应用netplan:
sudo netplan generate sudo netplan apply
现在可能显示警告(而不是错误)。这是警告,而不是错误。我检查了正在运行的systemd服务,发现netplan-wpa-wlan0.service已在运行。可能是因为它已经在运行,并且" netplan apply"更新了配置文件(即使没有任何更改)也显示了警告。
Warning: The unit file, source configuration file or drop-ins of netplan-wpa-wlan0.service changed on disk. Run 'systemctl daemon-reload' to reload units.