1. 網(wǎng)絡(luò)配置簡介
本文著重介紹如何通過配置文件配合命令行來修改網(wǎng)絡(luò)參數(shù),以及如何通過程序來修改配置文件。若用戶僅想了解如何【通過桌面窗口】配置網(wǎng)絡(luò),或者想知道【為什么】debian系統(tǒng)采用NetworkManager這種方式配置網(wǎng)絡(luò),可以閱讀《Linux網(wǎng)絡(luò)配置方法介紹》。
NetworkManager對應(yīng)的命令行工具是:nmcli和nmtui。由于這兩個工具功能過于強(qiáng)大和復(fù)雜,本文檔只會描述涉及到的使用方法以及參數(shù)。更全面的使用,還請用戶自行查閱NetworkManager官方相關(guān)文檔。
1.1 Connection
Connection:連接,是網(wǎng)絡(luò)配置的抽象表示。NetworkManager 允許用戶配置多個不同類型的Connection,每個Connection會與UUID進(jìn)行唯一綁定。用戶根據(jù)需要切換或管理這些Connection。這使得在不同網(wǎng)絡(luò)環(huán)境下靈活地管理網(wǎng)絡(luò)連接成為可能,例如在家庭網(wǎng)絡(luò)、公司網(wǎng)絡(luò)、公共Wi-Fi熱點(diǎn)和VPN之間切換。
查看連接的命令如下所示。
nmcli connection show

查看連接,用戶會發(fā)現(xiàn)有2個系統(tǒng)默認(rèn)的連接。這兩個連接屬于【動態(tài)生成的連接】,一開始通過查看連接參數(shù)配置目錄,會發(fā)現(xiàn)沒有其對應(yīng)的配置文件。
ls /etc/NetworkManager/system-connections/

因?yàn)椤緞討B(tài)生成的連接】是不會產(chǎn)生對應(yīng)的【配置文件】。因此要配置這種【連接】的話,要么是通過桌面窗口,要么通過nmcli命令(nmcli connection modify
. )進(jìn)行配置。這兩種方式對于應(yīng)用程序來說,都不是很方便,因此我們選擇第三種方式進(jìn)行管理:創(chuàng)建新的Connection。
1.2 GUI創(chuàng)建wifi Connection
與【動態(tài)生成的連接】不同,連上了wifi,生成Connection的同時,也會生成一個以wifi名稱命名的配置文件。
1.3 命令創(chuàng)建wifi Connection
除了通過GUI連接wifi創(chuàng)建連接以外,還可以通過命令創(chuàng)建新的連接,這種方式以便于程序管理配置文件,命令如下所示:
nmcli connection add type wifi ifname wlan0 con-name "wlan0-con" ssid HUAWEI-0H1YW8 -- wifi-sec.key-mgmt wpa-psk wifi-sec.psk "88888888" nmcli connection show

又或者先創(chuàng)建配置文件,再用命令進(jìn)行密碼修改:
nmcli connection add type wifi ifname wlan0 con-name "wlan0-con" ssid HUAWEI-0H1YW8 nmcli connection modify "wlan0-con" wifi-sec.key-mgmt wpa-psk nmcli connection modify "wlan0-con" wifi-sec.psk "88888888"
1.4 激活Connection
GUI方式激活:
通過右上角【小電腦圖標(biāo)】,選擇不同的wifi連接,則是激活對應(yīng)的Connection。注意:通過命令創(chuàng)建出來的wifi Connection不能在這里找到。
命令方式激活:
nmcli connection up wlan0-con
或者
nmcli connection up 6c4e19a4-d4d0-4b94-ab09-551c003274f8
1.5 修改Connection
采用下方命令打開Connection所對應(yīng)的配置文件
sudo vim /etc/NetworkManager/system-connections/wlan0-con.nmconnection

修改完畢后,請用下方重啟網(wǎng)絡(luò)服務(wù),并激活網(wǎng)卡。
sudo systemctl restart NetworkManager nmcli connection up wlan0-con
1.6 刪除Connection
刪除連接,命令如下所示:
nmcli connection delete wlan0-con

2. 快速上手
2.1 例程源碼下載
到【百度網(wǎng)盤】上下載相關(guān)的單例程序:
鏈接:https://pan.baidu.com/s/1RXHMGpmGSEfFy0rb1VkXSg?pwd=1234
提取碼: 1234
比如在windows環(huán)境中,就把單例程序下載到:此電腦D:BaiduNetdisk (無規(guī)定,用戶可自主選擇),如下圖所示。
然后把例程【復(fù)制粘貼】到nfs掛載目錄中。(不清楚目錄如何構(gòu)建的,可以參考《入門指南/開發(fā)環(huán)境準(zhǔn)備/nfs服務(wù)搭建與掛載》)
2.2 例程編譯&運(yùn)行
通過adb shell進(jìn)入開發(fā)板環(huán)境(不清楚如何通過adb進(jìn)行調(diào)試,可以參考《入門指南/開發(fā)板調(diào)試方式介紹/adb調(diào)試》),執(zhí)行下方命令定位到demo目錄,并且執(zhí)行編譯操作。
cd /home/orin-nano/Desktop/nfs/01_network/ ./build.sh

編譯成功后,相關(guān)的demo會生成在Release目錄下。
執(zhí)行下方命令以運(yùn)行demo,如下所示。
sudo ./Release/test-wifi
執(zhí)行效果如下所示。
如果出現(xiàn)如下現(xiàn)象,則說明配置文件未被創(chuàng)建??梢?strong>回看本文第一章,了解一下如何通過命令創(chuàng)建Connection。
2.3 注意
程序運(yùn)行完畢以后,只是修改了Connection的配置參數(shù),參數(shù)也不會馬上生效。要使修改后的參數(shù)生效,還需要重啟NetworkManager,以及激活相關(guān)的Connection。兩個步驟的命令如下。
3. C語言使用案例
3.1 配置文件內(nèi)容介紹
NetworkManager的配置文件位于系統(tǒng)的/etc/NetworkManager/system-connections/目錄下,采用了經(jīng)典的ini組織格式。即section、key、value格式,如下所示:
[section] key = value
規(guī)則:section不能嵌套section;同一section下key不能重名。
3.2 配置文件操作介紹
網(wǎng)絡(luò)配置的C語言使用案例,代碼地址為01_network/test-wifi/main.c,供用戶編碼參考。
以下代碼展示了對Connection的基本配置操作流程:
int main(int argc, char const *argv[]) { char configFile[512]={0}; sprintf(configFile,"%s%s", CONFIG_PATH, CFG_ETH0); // 讀取配置項(xiàng) printf("type = %sn", ini_read_string(configFile, "connection", "type")); printf("name = %sn", ini_read_string(configFile, "connection", "interface-name")); printf("ssid = %sn", ini_read_string(configFile, "wifi", "ssid")); printf("psk = %sn", ini_read_string(configFile, "wifi-security", "psk")); printf("method = %sn", ini_read_string(configFile, "ipv4", "method")); // 寫入配置 ini_write_string(configFile, "wifi-security", "auth-alg", "open"); ini_write_string(configFile, "wifi-security", "key-mgmt", "wpa-psk"); ini_write_string(configFile, "wifi-security", "psk", "lmo12345678"); printf("n======================= modify password =======================n"); printf("psk = %sn", ini_read_string(configFile, "wifi-security", "psk")); return 0; }
其中 ini_read_string()函數(shù)和ini_write_string()函數(shù)是對libini的這個第三方庫一些接口的簡單封裝,具體實(shí)現(xiàn)于01_network/common_api/ini_wrapper.c。
若用戶需要如demo一樣地引用這個第三方庫,需要注意以下兩點(diǎn)。
* 需要包含頭文件:#include 。
* 編譯時,需要加上-lini作為編譯參數(shù)。
若用戶對這個第三方庫的源碼感興趣,可以訪問:
* https://sourceforge.net/projects/libini/files/libini/libini-1.1.10/
審核編輯 黃宇
-
WIFI
+關(guān)注
關(guān)注
81文章
5406瀏覽量
208351 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5682瀏覽量
104788 -
rk3576
+關(guān)注
關(guān)注
1文章
175瀏覽量
728
發(fā)布評論請先 登錄
基于RK3576開發(fā)板的MIPI-DSI使用

【米爾RK3576開發(fā)板評測】+項(xiàng)目名稱【米爾RK3576開發(fā)板評測】一個視頻和你共同認(rèn)識一下米爾RK3576開發(fā)板
米爾RK3576開發(fā)板特惠活動!

評論