有人可以列出配置文件的完整结构吗?网络管理器将已知网络存储在 /etc/NetworkManager/system-connections 中?
示例(文件名为 askUbuntu):
[connection]
id=askUbuntu
uuid=81255b2e-bdf1-4bdb-b6f5-b94ef16550cd
type=802-11-wireless
[802-11-wireless]
ssid=askUbuntu
mode=infrastructure
mac-address=00:08:CA:E6:76:D8
[ipv6]
method=auto
[ipv4]
method=auto
我想使用脚本自己创建其中一些。但在这样做之前,我想知道每一个可能的选择。
此外,这种结构似乎在某种程度上类似于使用 dbus 获取的活动连接信息。
dbus-send --system --print-reply \
--dest=org.freedesktop.NetworkManager \
"$active_setting_path" \ # /org/freedesktop/NetworkManager/Settings/2
org.freedesktop.NetworkManager.Settings.Connection.GetSettings
会告诉你:
array [
dict entry(
string "802-11-wireless"
array [
dict entry(
string "ssid"
variant array of bytes "askUbuntu"
)
dict entry(
string "mode"
variant string "infrastructure"
)
dict entry(
string "mac-address"
variant array of bytes [
00 08 ca e6 76 d8
]
)
dict entry(
string "seen-bssids"
variant array [
string "02:1A:11:F8:C5:64"
string "02:1A:11:FD:1F:EA"
]
)
]
)
dict entry(
string "connection"
array [
dict entry(
string "id"
variant string "askUbuntu"
)
dict entry(
string "uuid"
variant string "81255b2e-bdf1-4bdb-b6f5-b94ef16550cd"
)
dict entry(
string "timestamp"
variant uint64 1383146668
)
dict entry(
string "type"
variant string "802-11-wireless"
)
]
)
dict entry(
string "ipv4"
array [
dict entry(
string "addresses"
variant array [
]
)
dict entry(
string "dns"
variant array [
]
)
dict entry(
string "method"
variant string "auto"
)
dict entry(
string "routes"
variant array [
]
)
]
)
dict entry(
string "ipv6"
array [
dict entry(
string "addresses"
variant array [
]
)
dict entry(
string "dns"
variant array [
]
)
dict entry(
string "method"
variant string "auto"
)
dict entry(
string "routes"
variant array [
]
)
]
)
]
我可以使用 dbus(/org/freedesktop/NetworkManager/Settings 中的 AddSettings())传递以下类型的输入来创建新的设置文件,所以向我解释这个结构并告诉我所有可能的选项也会有所帮助。据我所知,这是一个 Dictionary{String, Dictionary{String, Variant}}。
直接创建配置文件和使用 dbus 有什么区别吗?
答案1
该文件不是供用户编辑的,而是由网络管理器工具编辑的。您可以使用以下方式阅读手册:
man nm-settings
文件
/etc/NetworkManager/system-connections or distro plugin-specific location
该列表太长/太广泛并且随时可能发生变化,因此建议使用手册页,因为它与您的 NM 版本同步。
答案2
添加到Braiam 的回答(对于评论来说太长了),一些可能有用的细节可以避免/etc/NetworkManager/system-connections/askUbuntu
上面命名的密钥文件中的地址/标识符冲突:
1)为了不与系统中已经存在的 UUID 冲突,您可以创建一个在终端运行的随机 UUID ,并将其输出粘贴到文件部分中的uuidgen
密钥中。uuid=
[connection]
/etc/NetworkManager/system-connections/askUbuntu
2) 为了不与您家庭网络中已在使用的另一个 IPv4(假设)发生冲突(在您的网关内安全无虞),您可以选择从 192.168.0.0 到 192.168.255.255 范围内的地址,然后在 部分中将[ipv4]
密钥更改method=
为并使用您选择的地址manual
创建密钥。address1=
2.1)如果你不知道地址,你可以shuf -i 1:255 -n 2
在终端中运行以获取最后的位置——65k 次碰撞中只有一次机会