使用nm-applet,可以很容易地保存VPN连接和连接的用户名+密码,然后在使用某个Wi-Fi连接时自动连接到它。它总是会自动连接到它,而不要求输入密码。
如何在终端使用nmcli
其他命令来实现这一点?我正在尝试编写脚本,以便更轻松地部署更多连接并编辑它们。
到目前为止我只设法
nmcli connection import type openvpn file ned.ovpn
我还注意到,已保存的连接可以在以下位置找到
/etc/NetworkManager/system-connections/
我尝试将相同的设置从笔记本电脑复制到台式机,但似乎没有任何变化 - 它似乎没有看到/更改这些设置。
答案1
以下是我最初评论的详细解释。目标是了解使用 CLI 工具的等效功能纳米克利无需浏览所有文档即可查明设置,只要用户在 GUI 工具上知道该设置即可:借助此 GUI 工具的临时帮助nm-小程序,必须可用某处(甚至不是同一个系统)具有等效的设置。这只是一种通用方法,可用于除此处考虑的设置之外的任何其他设置。
涉及两个连接:我将调用它们主要的, 和我的VPN使用时会自动连接主要的。此处的更改将在主要的,这是必须检查的。
$ nmcli connection show
NAME UUID TYPE DEVICE
main cfa5be23-925a-4273-b5de-2f9adaac8782 wifi --
myVPN 0d9e60ef-6b5e-4f65-8312-8db428589866 vpn --
要显示 main 的配置,请执行以下任一操作:
nmcli connection show id main
nmcli connection show uuid cfa5be23-925a-4273-b5de-2f9adaac8782
将转储许多其他行,例如:
connection.id: main
connection.uuid: cfa5be23-925a-4273-b5de-2f9adaac8782
connection.type: 802-11-wireless
[...]
所以首先转储全部它在一个文件中。一些输出是本地化的,所以最好export LANG=C.UTF-8
之前做(如果稍后应该在互联网上搜索或比较特定的设置名称或值,这会有所帮助):
nmcli c show id main > /tmp/before
使用图形用户界面工具nm-小程序当该功能已知时,VPN我的VPN添加到主要:
转储它再次:
nmcli c show id main > /tmp/after
现在diff
可以比较并显示发生了什么变化:
$ diff -u /tmp/before /tmp/after
--- /tmp/before 2019-05-04 10:47:43.410149358 +0200
+++ /tmp/after 2019-05-04 10:47:58.798252044 +0200
@@ -15,7 +15,7 @@
connection.master: --
connection.slave-type: --
connection.autoconnect-slaves: -1 (default)
-connection.secondaries: --
+connection.secondaries: 0d9e60ef-6b5e-4f65-8312-8db428589866
connection.gateway-ping-timeout: 0
connection.metered: unknown
connection.lldp: default
那么这就意味着之前不起眼的设定connection.secondaries
已被设置,无需太多猜测,即可我的VPN的 UUID:0d9e60ef-6b5e-4f65-8312-8db428589866
.nm-设置(5)讲述了它在连接设置:
字符串 [] 的辅助数组
激活基本连接本身时应激活的连接 UUID 列表。目前仅支持 VPN 连接。
您现在可以再次清除与 VPN 的任何自动连接主要的和:
nmcli c modify id main connection.secondaries ''
并再次添加我的VPN与(它是一个数组,因此+
):
nmcli c modify id main +connection.secondaries 0d9e60ef-6b5e-4f65-8312-8db428589866
通过一些粘合代码(从 id 等检索 uuid),现在可以实现自动化。
当然,相应的行会在文件中的某个位置添加或删除/etc/NetworkManager/
,但不应依赖于此。
注意:在写这个答案之前我并不知道这个设置,我只是按照我所说的去做。