本帖最后由 dongtao 于 2014-5-17 13:31 編輯
在這一章當(dāng)中,我們將介紹在OpenWRT系統(tǒng)下的編輯和配置的基礎(chǔ)指令和操作知識,因?yàn)楹罄m(xù)的章節(jié)主要用于介紹如何配置路由的相關(guān)功能,在配置的操作時(shí)我們需要掌握編輯和處理的方法。 本章中,編輯和配置的基礎(chǔ)方法我們分為三種,三種方式都可以操作成功。分別為: - 使用VI編輯器: 適合教學(xué)時(shí)直接修改配置文件。
- 使用UCI進(jìn)行編輯: 適合教學(xué)時(shí)使用,更適合用于自己開發(fā)的第三方程序修改配置文件。
- 使用SCP下載到本地編輯: 適合教學(xué)和系統(tǒng)的測試,文件通過SCP工具下載到本地修改,完成后再上傳到服務(wù)器上(要注意使用Notepad++或editplus或ue這類支持unix格式文本文件編輯器)
VI編輯器介紹vi(Visual Interface)是Linux上最通用的標(biāo)準(zhǔn)編輯器,幾乎99.99%的Linux發(fā)行版中都包含它。vi可以在不需要圖形界面的情況下實(shí)現(xiàn)對文件的查看、修改、刪除、查找、替換等眾多功能。vi的操作,適用于通過串口直接修改文件,以及通過ssh遠(yuǎn)程登入系統(tǒng)修改文件。 在OpenWRT中,系統(tǒng)允許通過vi編輯器直接修改UCI配置文件,從而實(shí)現(xiàn)對系統(tǒng)的配置。 VI的操作方法在本節(jié)我們就簡單的介紹下VI的基本操作方法。
vi指令語法: vi [文件名]
如果指定的文件名不存在,將會(huì)在內(nèi)存中自動(dòng)創(chuàng)建一個(gè)空文件,等待保存時(shí)保存到磁盤上。如果文件名存在則將打開該文件。vi在打開文件后有兩種工作模式: - vi指令模式: 在這個(gè)模式下,不能對文件做修改,指令輸入內(nèi)容在屏幕的左下方顯示。
- vi編輯模式: 在編輯模式下,可以對文件內(nèi)容進(jìn)行修改,刪減,或增加。在OpenWRT的系統(tǒng)下,我們可以輸入鍵盤上的主鍵盤區(qū)內(nèi)容,也可以使用上下左右箭頭按鍵調(diào)整位置。
兩種模式切換: 在指令模式下,按鍵盤上的字母”i”既進(jìn)入編輯模式(insert方式),這個(gè)時(shí)候可對文件進(jìn)行修改編輯。在編輯模式下按鍵盤的esc鍵,即可返回指令模式,可以輸入指令。 vi支持的指令列表,所有指令都要輸入”:”作為指令開頭,以回車作為指令結(jié)束:
退出vi編輯器指令,放棄對文件的修改: :q! 退出vi編輯器: :q 保存當(dāng)前內(nèi)容: :w 保存退出: :wq 強(qiáng)制保存退出: :wq! 搜索字符: :/[字符內(nèi)容]
操作舉例: 鍵盤輸入 i 進(jìn)入編輯模式,然后可以 隨便輸入一些字符(這時(shí)已經(jīng)可以寫文字了) 保存退出,進(jìn)入指令模式,輸入保存退出指令:wq (請編輯截圖) 該文件即保存,再次使用vi /tmp/test打開文件即可看到文件保存內(nèi)容。 認(rèn)識UCI眾所周知,在Linux下各種軟件包有各種不同的配置腳本,每個(gè)配置腳本的語法格式和操作方式不同,這樣的設(shè)計(jì)雖然可以體現(xiàn)出各軟件包自身的優(yōu)勢,同時(shí)也增加了智能路由產(chǎn)品開發(fā)的難度。在這一點(diǎn)上OpenWRT下的UCI技術(shù)無疑是一種創(chuàng)新。 UCI是(Unified Configuration Interface)集中式配置信息管理接口的縮寫,他是OpenWRT引進(jìn)的一套配置參數(shù)管理機(jī)制。UCI管理了OpenWRT下最主要的系統(tǒng)配置,并且提供了簡單,容易,標(biāo)準(zhǔn)化的人機(jī)交互接口。UCI的管理包含了網(wǎng)絡(luò)配置,無線配置,系統(tǒng)信息配置等作為路由器的系統(tǒng)主要配置參數(shù)。UCI可以幫助開發(fā)人員快速的開發(fā)出基于OpenWRT的智能路由產(chǎn)品的控制界面(諸如瀏覽器界面,手機(jī)界面等)。 在OpenWRT下有大量的軟件包的配置實(shí)用了UCI兼容模式。大量的應(yīng)用程序其實(shí)都有他們自己的配置文件,比如samba的配置文件默認(rèn)是/etc/samba/samba.conf,但是在OpenWRT下samba軟件包使用的配置方式也是UCI。當(dāng)執(zhí)行/etc/init.d/samba start的時(shí)候,啟動(dòng)腳本將通過UCI的shell解碼器分析/etc/config/samba配置文件,并且生成需要的/etc/samba/samba.conf配置,來完成配置。 OpenWRT下服務(wù)軟件加載流程(samba舉例):
啟動(dòng)腳本—>/etc/config/samba(UCI解碼器)—>/etc/samba/samba.conf—>啟動(dòng)samba服務(wù)
OpenWRT下配置處理流程(samba舉例):
uci命令—>UCI編解碼器—>/etc/config/samba
由于uci配置文件非常適合人機(jī)交互,因此如果你是需要人工修改配置,也可以簡單的使用常見的vi編輯器直接修改配置:
vi /etc/config/samba
默認(rèn)的OpenWRT系統(tǒng)擁有以下幾個(gè)配置文件,隨著軟件包的增加系統(tǒng)配置文件數(shù)量也會(huì)增加:
dhcp 路由器的DHCP服務(wù),面向LAN口下計(jì)算機(jī)提供IP地址分配服務(wù) dropbear SSH服務(wù) firewall 路由轉(zhuǎn)發(fā),端口轉(zhuǎn)發(fā),防火墻規(guī)則 fstab 外部存儲(chǔ)器配置 network WAN / LAN 網(wǎng)絡(luò)配置 system 時(shí)間服務(wù)器時(shí)區(qū)配置 wireless 無線網(wǎng)絡(luò)配置
UCI配置文件格式UCI默認(rèn)情況下只處理/etc/config中的配置文件,通過參數(shù)指定也可以通過UCI處理其他位置的配置文件。UCI的配置文件同XML不同(XML的設(shè)計(jì)更適應(yīng)機(jī)器讀取),而UCI配置文件的設(shè)計(jì)對于人讀取非常友好。所以即使你手工修改這些配置也是沒有任何問題的。 UCI文件內(nèi)容格式舉例:
config ‘example’ ‘test’
option ‘string’ ‘some value’
option ‘boolean’ ’1′
list ‘collection’ ‘first item’
list ‘collection’ ‘second item’
從config開始一直到下一個(gè)config出現(xiàn)中間的內(nèi)容表示一個(gè)段配置(以下均用Section表達(dá)),其作用類似編程語言中的{}作用,是表示一個(gè)區(qū)域數(shù)據(jù)。
Section開始語法: config ‘類型’ ‘名字’
其中上面例子的example就是這個(gè)配置的類型,而test就是這個(gè)配置的名字。UCI允許”匿名”的配置存在所以可能存在只有”類型”而沒有”名字”的配置。
參數(shù)定義語法: option ‘鍵’ ‘值’
option表示當(dāng)前的配置中的鍵/值定義語法。上面例子定義了一個(gè)鍵為’string’,值為’some value’的配置參數(shù)。
列表定義語法: list ‘集合名字’ ‘值’
list表示一種集合參數(shù),UCI會(huì)根據(jù)相同集合名字生成一個(gè)數(shù)組(以上例子數(shù)據(jù)中包含’first item’和’second item’兩個(gè)值)給予相應(yīng)的軟件包使用。 UCI允許的參數(shù)格式:
option example value
option ‘example’ value
option example “value”
option “example” ‘value’
option ‘example’ “value”
當(dāng)遇到上面錯(cuò)誤的時(shí)候,UCI還是可以很好的工作,但是如果遇到下面的格式,UCI將出現(xiàn)問題:
option ‘example” “value’
option example some value with space
另外非常重要的是,盡量使用常規(guī)字符去處理器UCI,特殊字符有可能會(huì)破壞數(shù)據(jù)結(jié)構(gòu)的完整性。 UCI文件讀寫方式UCI文件的讀寫有兩種方式: - UCI文件的讀寫可以通過OpenWRT附帶的uci指令來完成,這種讀寫方式可以用于命令行也可以用于自己開發(fā)的WEB程序來操作。
- 直接使用系統(tǒng)的vi編輯器直接修改UCI文件,所做的修改也可以被系統(tǒng)所識別。
UCI指令讀取配置語法格式: uci [<options>] <command> [<arguments>] 查看類語法:
uci get <config>.<section>[.<option>] 取得一個(gè)鍵的值 或根據(jù)段的名字取得類型
uci show [<config>[.<section>[.<option>]]] 顯示出全部 / 配置文件 / 段 / 鍵 的完整格式
uci changes [<config>] 顯示出全部 / 配置文件 的未保存修改(經(jīng)過commit語法保存后就不再有記錄)
變更類語法:
uci add <config> <section-type> 增加一個(gè)匿名段配置到配置文件中
uci set <config>.<section>[.<option>]=<value> (增加/修改)一個(gè)有名字的段 / 增加一個(gè)段中的鍵和值
uci add_list <config>.<section>.<option>=<string> 增加一個(gè)列表集合數(shù)據(jù)到配置文件中
uci del_list <config>.<section>.<option>=<string> 刪除一個(gè)指定值的列表集合數(shù)據(jù)
uci delete <config>[.<section>[[.<option>][=<id>]]] 刪除一個(gè) 段 / 鍵 / 指定值的鍵
uci commit [<config>] 將變更保存在文件中,或保存全部變更到各自文件
UCI在讀取的時(shí)候優(yōu)先顯示內(nèi)存中的緩存,其次顯示文件中的。UCI在進(jìn)行變更的時(shí)候只變更內(nèi)存的,如果要使變更生效需要執(zhí)行commit將其寫入文件。 來舉個(gè)例子。首先產(chǎn)生一個(gè)用來做測試的樣本測試:
root@OpenWrt:~# cp /etc/config/system /etc/config/mytest
查看當(dāng)前狀態(tài): 取出mytest.ntp.server的值: 增加一個(gè)名為mytest類型為hello的段到mytest文件中:
root@OpenWrt:~# uci set mytest.mytest=hello
增加一個(gè)配置到這個(gè)段中:
root@OpenWrt:~# uci set mytest.mytest.enable=1
修改mytest.@system[0].hostname這個(gè)參數(shù):
root@OpenWrt:~# uci set mytest.@system[0].hostname=hoowa
刪除掉一個(gè)ntp.server的值:
root@OpenWrt:~# uci del_list mytest.ntp.server=2.openwrt.pool.ntp.org
查看都修改了啥: 保存修改:
root@OpenWrt:~# uci commit mytest
看看文件有啥變化: 舉例,開啟wifi功能:
root@OpenWrt:/# uci set wireless.radio0.disabled=0
root@OpenWrt:/# uci commit wireless
讓wifi開啟生效:
root@OpenWrt:/# wifi
使用SCP進(jìn)行文件傳輸SCP(Secure copy)是OpenWRT中的SSH附帶的文件傳輸功能,SCP在操作上類似FTP可以實(shí)現(xiàn)一個(gè)安全的數(shù)據(jù)文件傳輸。 SCP適用于調(diào)試階段的程序文件上下載,從而進(jìn)行快速測試,這是個(gè)非常不錯(cuò)的工具。 第一步:正式開放SSH在默認(rèn)的情況下由于沒有密碼,所以SSH無法登入。首先修改系統(tǒng)超級賬戶密碼,在提示中填寫兩次新密碼:
root@OpenWrt:/# passwd
完成后重啟SSH的服務(wù):
root@OpenWrt:/# /etc/init.d/dropbear restart
第二步: 安裝WinSCP大家可以使用一個(gè)winscp的工具實(shí)現(xiàn)這個(gè)操作。winscp工具已經(jīng)放在了教學(xué)服務(wù)器上,下載地址為http://182.92.3.46/hoowa/openwrt/tools/winscp439setup.zip。安裝這個(gè)工具軟件,然后讓你的電腦連接到開發(fā)板的wifi上(在上邊案例中,你已經(jīng)開啟過wifi了,對嗎?),同時(shí)打開軟件。 第三步: 點(diǎn)擊新建
主機(jī)名填寫IP地址,默認(rèn)的開發(fā)板是192.168.1.1
端口填寫22
用戶名填寫root
密碼就填寫剛才設(shè)置的那個(gè)密碼
文件協(xié)議選擇SCP
點(diǎn)擊連接, 連接過程中有提示找不到group指令,沒關(guān)系直接確認(rèn)就行了。 第四步:文件處理登入后,操作起來就像FTP工具一樣,左側(cè)是你的電腦,右側(cè)是開發(fā)板系統(tǒng),你可以上載下載文件。 在本章,我們介紹了三種進(jìn)行配置編輯的方法,請選擇其中一種最為你進(jìn)行后續(xù)操作所使用的方式即可。其他的用到了再回來學(xué)習(xí)也可以的。 到這里,我們在硬件部分的第一次操作基本完成,接下來將進(jìn)去軟件環(huán)節(jié),來學(xué)習(xí)如何配置出一個(gè)具備完整功能的路由系統(tǒng)來。
|