想象一下这么一个场景:某次更新有某些包装漏了,结果重启后进不了图形系统,只好切换到终端下,把软件包补齐。这时候需要先配置下网络。现在都 2013 年了,难道配置网络这种事情还要靠 ifconfig 、 route 这些玩意手动来做吗?
显然不用。图形界面下我们有方便好用的 NetworkManager (当然,好用的前提是你不会碰到一些特别奇怪的网络环境),其实 CLI 下一样有,那就是 nmcli 。
nmcli 的用法是非常简单的。要激活一个链接,可以按以下步骤进行:
$ LC_ALL=C nmcli con
输入这行命令可以显示出系统中当前存在的链接配置,按照 ID 、UUID 、类型和上次使用时间的顺序给出。例如:
NAME UUID TYPE TIMESTAMP-REAL CMCC 5cc416b9-ff72-4fb3-b596-d40c25666c9f 802-11-wireless Tue Nov 13 15:48:54 2012 HZAU dc2f69b4-d401-421c-b9cf-0938895af769 pppoe Wed Feb 20 00:34:17 2013 uboot af43cf43-1bd0-4c5a-a5cb-df052535eb96 802-3-ethernet Mon Mar 25 14:05:13 2013 Default 8f5ad6f4-f82b-45fb-89a9-65b0fd2d1d46 802-3-ethernet Wed Apr 10 00:36:39 2013 HUST_WIRELESS_5.8G 9358c2ca-1df4-4d3f-a864-12a5c7b4336b 802-11-wireless Mon Dec 3 19:35:14 2012 HUST_WIRELESS 7e7d2cac-b04f-4264-93c8-afa6ad6554f0 802-11-wireless Mon Dec 3 14:31:27 2012 HUST ef90d46a-7a29-4134-8c3b-994844841e54 802-3-ethernet Wed Apr 10 09:52:21 2013
其中 Default 就是自动配置了,会先尝试 DHCP ,如果失败则分配 169.254.0.0/16 这样的 link-local 地址。其余的项目都是用户在图形界面下的 NetworkManager 里面添加的,可以根据需要自行选用激活。例如,这里我要用到的配置 ID 为“ HUST ”,它将自动配置好我科校园网的 IP 、网关和 DNS 。
由于 VT 不支持中文,所以在命令前加上了“ LC_ALL=C ”来防止 nmcli 输出无法显示的中文字符。
$ LC_ALL=C nmcli con up id HUST
这条命令会激活“ HUST ”配置文件。其输出一般如下:
Active connection state: activated Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/0
值得注意的是,执行 nmcli 并不需要特权。
一般也就会用到这两条。如果对配置 ID 比较熟悉的话,第一条也可以省掉了。激活新的链接一般不需要手动断开旧的。
nmcli 的更多用法可以用“ nmcli -h ”或者“ man nmcli ”来获得。