簡述
- 顧名思義,nmcli就是NetworkManager的cli(命令行)
- 摘抄和翻譯源自:https://developer.gnome.org/NetworkManager/unstable/nmcli.html
語法
nmcli [OPTIONS...] { help | general | networking | radio | connection | device | agent | monitor } [COMMAND] [ARGUMENTS...]
上面的語法就是: nmcli [選項...] 對象 [命令] [參數...]
對象 = help | general | networking | radio | connection | device | agent | monitor
提示: 1-輸入命令的時候請善用tab補全,少打很多單詞!
2-支持簡寫,例如connection可以簡寫成con或c, modify可以簡寫成mod或m
比較有用的選項(OPTION)
-a | --ask 提示輸入缺少的參數,而不是報錯。例如連接wifi的時候,沒有提供password參數,那么如果有-a選項就會提示輸入密碼
-p | --pretty 顯示的時候會更加易於人類閱讀,尤其是多行顯示的時候,可以分塊顯示
-m | --mode { tabular | multiline } tabular顯示的時候是表格式(有表頭)的,不易閱,multiline是多行類似key:value形式。如果省略,大多數命令默認使用tabular。 nmcli connection show ID和nmcli device show這兩命令因為結構化信息不好單行顯示,如果省略,默認使用multiline
-f | --fields { field1,field2... | all | common } 默認使用common(命令公共字段)。也可以指定特定字段,比如nmcli -f GENERAL.DEVICE,IP4.ADDRESS device show 顯示網卡名和ip地址(善用tab補全)。查看可用字段的方法:1-通過對應對象的show來找到字段.對於connection對象,可以使用man 5 nm-settings查看, 或者輸入錯誤字段,讓報錯來提示可字段,比如輸入nmcli -f xxx connection show myAP 就會報錯,提示可用字段
對象
general對象(常規信息)
用途
- 常規信息,個人感覺本對象用途不大,稍微有用一點的就是status了,例如:顯示NetworkManager的狀和操作權限,獲取和修改系統主機名,NetworkManager的日志級別和域
語法
nmcli general { status | hostname | permissions | logging } [ARGUMENTS...]
networking對象(整個網絡)
用途
- 查詢NetworkManager狀態,啟用禁用網絡
語法
nmcli networking { on | off | connectivity } [ARGUMENTS...]
命令示例
nmcli networking off #禁用所有被NetworkManager托管的網絡接口的網絡連接(修改配置文件可以啟用或禁止NetworkManager托管,可以自行百度)
nmcli networking connectivity check # 參數check表示重新檢查連接狀態。連接狀態full表示具有完全的internet訪問能力,limited表示連接到一個網絡,但是internet未接入
radio對象(無線開關)
用途
- 顯示無線電開關狀態,啟用、禁用無線電
語法
nmcli radio { all | wifi | wwan } [ARGUMENTS...]
命令示例
nmcli radio wifi # 打印wifi開關狀態
nmcli radio wifi off # 表示關閉wifi
connection對象(連接的配置)
用途
- NetworkManager會把網絡配置保存為connections配置信息,比如保存二層網絡信息,ip信息等。NetworkManger會根據這些信息知道怎么去連接一個網絡。在一個特定設備,可以有多個連接配置(比如一個是dhcp的,一個是靜態ip地址的),但是只有一個配置是“活動“的配置。connection對象就是用來管理這些連接配置的。
語法
nmcli connection { show | up | down | modify | add | edit | clone | delete | monitor | reload | load | import | export } [ARGUMENTS...]
-
激活連接的語法詳述:
語法: nmcli connection up [ id | uuid | path ] ID [ifname ifname] [ap BSSID] [passwd-file file]
解釋:一個連接由其name(名稱),uuid或path(就是D-Bus路徑)所標識。如果ID不明確,則可以使用關鍵字id,uuid或path來指明這個ID是什么。當需要特定設備激活連接時,應提供帶有接口名稱的ifname選項。如果未提供ID,則需要一個ifname,NetworkManager將為給定的ifname激活最佳的可用連接。如果是VPN連接,則ifname選項指定基本連接的設備。ap選項指定在Wi-Fi連接的情況下應使用哪個特定的AP。passwd-file:某些網絡在激活期間可能需要憑據。您可以使用此選項提供這些憑據。文件的每一行應包含一個密碼。文件內容格式為setting_name.property_name:the password。例如WPA-PSK連接的格式為802-11-wireless-security.psk:secret12345。nmcli還接受wifi-sec和wifi字符串,而不是802-11-wireless-security。當NetworkManager需要密碼但未提供密碼時,nmcli在使用--ask運行時會要求輸入密碼。如果未傳遞--ask,則NetworkManager可以詢問可能正在運行的另一個秘密代理(通常是GUI秘密代理,例如nm-applet或gnome-shell)。 -
停用連接的語法詳述:
語法: nmcli connection down [ id | uuid | path | apath ] ID... #注意這里的ID可指定多個
解釋: 請注意,該命令將停用指定的活動連接,但是該連接處於活動狀態的設備仍可以連接,並且將通過查找設置了“自動連接”標志的合適連接來執行自動激活。 請注意,停用的連接配置文件在內部被阻止再次自動連接。 因此,它不會自動連接,直到重新啟動或直到用戶執行取消自動連接的操作為止,例如修改配置文件或顯式激活它。在大多數情況下,您可能想使用device disconnect命令。
該連接由其名稱,UUID或D-Bus路徑標識。 如果ID不明確,則可以使用關鍵字id,uuid,path或apath。 -
修改連接的語法詳述:
語法 : modify [--temporary] [ id | uuid | path ] ID { option value | [+|-]setting.property value } ...
解釋: 在連接配置文件中添加,修改或刪除屬性。要設置屬性,只需指定屬性名稱后跟值即可。空值(“”)將屬性值重置為默認值。除了屬性外,您還可以對某些屬性使用簡稱。有關詳細信息,請參閱“屬性別名”部分。如果要將項目或標志附加到現有值,請使用+前綴作為屬性名稱或別名。如果要從容器類型或標志屬性中刪除項目,請使用-前綴。對於某些屬性,您還可以通過指定從零開始的索引來刪除元素。 +和-修飾符僅對支持它們的屬性有效。例如,這些是多值(容器)屬性或標志,例如ipv4.dns,ip4,ipv4.addresses,bond.options,802-1x.phase1-auth-flag等。有關設置和屬性名稱,其描述和默認值的完整參考,請參見nm-settings(5)。如果設置和屬性是唯一的,則可以縮寫。該連接由其名稱,UUID或D-Bus路徑標識。如果ID不明確,則可以使用關鍵字id,uuid或path。 -
add edit clone export import reload等命令這里省略, 參考文章頭部給的url
命令示例:
nmcli connection show # 列出網絡連接的配置(存放於內存和硬盤的配置,nmcli -f active connection show 表示顯示存儲於內存配置, -f profile表示存放於硬盤的配置)
nmcli connection show --active # 僅列出處於活動狀態的網絡配置
nmcli --show-secrets -f 802-11-wireless-security.psk connection show myAP001 # 顯示myAP001密碼,加了--show-secrets或-s才能顯示密碼明文
nmcli connection show --order name # 按配置名排序,可選排序有type、active、name、path(d-bus路徑),+號和-號表示升序和降序,未指定,則默認使用升序。默認排序是:--order active:name:path
nmcli connection show uuid 38781e62-4bab-4ba8-a086-bfaece222794 # 按指定關鍵字顯示,關鍵字有id,uuid、path、apath。 用途是不能使用常規的nmcli connection show <配置名> 來顯示的時候,這種顯示方法就可以派上用場了。
nmcli connection up prof1 # 激活一個連接。
nmcli connection down prof1 # 停用一個連接
nmcli connection delete prof1 #刪除一個配置, delete [ id | uuid | path ] ID...
nmcli connection add type ethernet ifname enp5s0 # 創建一個連接。這里沒有指定method,則默認使用auto,也就是自動配置。類型是以太網,類型有以太網、wifi,adsl等,具體參考文章頭部給的url
nmcli connection add ifname enp5s0 autoconnect yes type ethernet ip4 10.1.1.1/8 gw4 10.1.0.1 # 創建一個靜態ip的以太網連接
nmcli connection modify myEth +ipv4.dns 8.8.8.8 # 給myEth的配置添加dns
nmcli connection modify myEth ipv4.method manual ipv4.addresses "192.168.43.64/24,10.0.0.23/8" #修改myEth連接為手動,ip地址設置為兩個
nmcli con mod myEth autoconnect no # 設置myEth連接配置為不自動連接(重啟操作系統或從起NetworkManager就能看到不會自動連接了)
device對象(網絡接口)
用途
- 顯示或管理網絡接口
語法
nmcli device { status | show | set | connect | reapply | modify | disconnect | delete | monitor | wifi | lldp } [ARGUMENTS...]
子命令詳細解釋(這里不全部翻譯,理解了上面connection,這里也是差不多的):
set [ifname] ifname [ autoconnect { yes | no } ] [ managed { yes | no } ]
Set device properties. connect ifname Connect the device. NetworkManager will try to find a suitable connection that will be activated. It will also consider connections that are not set to auto connect.If no compatible connection exists, a new profile with default settings will be created and activated. This differentiates nmcli connection up ifname "$DEVICE" from nmcli device connect "$DEVICE" If --wait option is not specified, the default timeout will be 90 seconds.
reapply ifname
Attempt to update device with changes to the currently active connection made since it was last applied.
modify ifname { option value | [+|-]setting.property value } ...
Modify the settings currently active on the device.
This command lets you do temporary changes to a configuration active on a particular device. The changes are not preserved in the connection profile.See nm-settings(5) for the list of available properties. Please note that some properties can't be changed on an already connected device.You can also use the aliases described in Property Aliases section. The syntax is the same as of the nmcli connection modify command.
disconnect ifname...
Disconnect a device and prevent the device from automatically activating further connections without user/manual intervention. Note that disconnecting software devices may mean that the devices will disappear.(這段翻譯一下:斷開設備連接,並防止設備自動激活。 斷開軟設備的連接可能會讓這些設備消失)
If --wait option is not specified, the default timeout will be 10 seconds.
delete ifname...
Delete a device. The command removes the interface from the system. Note that this only works for software devices like bonds, bridges, teams, etc(僅能刪除軟設備,例如bond、橋等). Hardware devices (like Ethernet) cannot be deleted by the command.(硬設備無法刪除)
wifi [ list [--rescan | auto | no | yes ] [ifname ifname] [bssid BSSID] ]
列出wifi熱點,可以指定無線網卡接口名和熱點BSSID。列出的熱點列表不會超過30秒,必要時會重新掃描(通過--rescan控制重新掃描:取值auto yes no)
wifi connect (B)SSID [password password] [ifname ifname] [bssid BSSID] [name name] [ private { yes | no } ] [ hidden { yes | no } ]
連接到由SSID或BSSID指定的wifi網絡。該命令找到匹配的連接或創建一個連接,然后在設備上激活它。如果已經存在配置文件,可以直接使用nmcli connection up <配置文件名>。private表示該連接是否對其他用戶可見。hidden用於連接隱藏ssid的wifi。
wifi hotspot [ifname IFNAME] [con-name NAME] [ssid SSID] [ band { a | bg } ] [channel channel] [password password]
創建一個熱點,con-name是配置名。
wifi rescan [ifname IFNAME] [ssid SSID...]
重新掃描wifi接入點,可以指定多個SSID。對於隱藏ssid的網絡,務必要指定ssid。命令不顯示接入點列表。顯示接入點列表請使用nmcli device wifi list命令
命令示例:
nmcli dev wifi list # 列出可用的wifi接入點, list可以省略
nmcli device wifi connect mySSID password '12345678' # 連接熱點mySSID, 連接成功后,就會自動生成配置文件,以后要再連接,可以使用nmcli connectio up mySSID命令了
nmcli device wifi hotspot con-name ap001 ifname wlp3s0 ssid myAP001 password 12345678 # 創建熱點。以后如果要使用,可以直接nmcli connection up ap001
常用屬性縮寫
- con-name = connection.id
- autoconnect = connection.autoconnect
- ifname = connection.interface-name
- mtu = 不同類型下的.mtu屬性
- ssid = wireless.ssid
- mode = wireless.mode(網卡為wifi時)
- ip4 = 作用於ipv4.addresses(並且設置ipv4.method為manual) ,同理可知ip6
- gw4 = ipv4.gateway(同理可知gw6)
屬性取值參考
參考 https://developer.gnome.org/NetworkManager/unstable/nm-settings.html
比如查看ipv4.method可以有auto disable manual等值(打開上面網頁搜索”ipv4 setting“)
更多例子參考
參閱 https://developer.gnome.org/NetworkManager/unstable/nmcli-examples.html