<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Openwrt開發指南 第14章 統一接口配置UCI

嵌入式大雜燴 ? 來源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2023-06-29 09:11 ? 次閱讀

1 UCI系統介紹

UCI即統一接口配置(UnifiedConfigurationInterface)的簡稱,它被應用于OpenWrt系統上面。

UCI是簡單、實用、直接了當的。UCI是OpenWrt上面主要的配置用戶接口,用來作為主要的系統設置,這些設置通常對設備是至關重要的,例如網絡接口、無線設置、遠程登陸權限設置等都是通過UCI來實現配置的。他是構建一整套系統的必須部分。

此外,大部分第三方軟件也被集成到UCI中,因此他們在openwrt中也能很簡單的配置。許多程序有他們自己的配置文件,像/etc/network/interfaces、/etc/exports、/etc/dnsmasq.conf、/etc/samba/smb.conf,并且他們有他們自己的語法,opewnrt不需要改變他們,只需要改UCI設置就行,opewnrt開發者已經對許多軟件做了UCI集成,當然openwrt開發者不可能把所有軟件都集成進來。因為他們的精力也是有限的。

大部分被集成到UCI系統中的軟件通過修改UCI配置文件,都能很簡單的被配置,這些配置主要應用于系統初始化腳本,他們在/etc/ini.d下面,開啟被UCI系統集成的進程就需要用UCI配置文件。比如運行/etc/init.d/sambastart就會用到/etc/config/samba配置文件。

2 UCI系統規則

Openwrt中UCI配置文件被放在/etc/config目錄下面,每一個配置文件設計到系統的一種配置。你可以用文本編輯器修改這個配置文件,或者用uci命令修改。當然它也可以用其他API接口來修改,比如shell、lua等,而且web接口像luci、webif也可以改變它。當配置文件被改變后,必須重啟程序才能生效。

下面舉一個修改ip地址的例子,如果你想把默認的ip:192.168.1.1改為192.168.2.1,可以通過vi來編輯配置文件。

$vi /etc/config/network

在/etc/config/network中找到:

option ipaddr192.168.1.1

把他改變為

option ipaddr192.168.2.1

然后重啟網絡/etc/init.d/networkrestart就會發現系統的ip已經變為新ip地址了。

3 UCI文件語法

UCI配置文件通常一個或者更多的config語句,一個config語句中包括一個或者更多的option語句來表示配置內容。下面一個UCI配置文件的內容:

package'example'

config'example''test'

option'string''somevalue'

option'boolean''1'

list'collection''firstitem'

list'collection''seconditem'

config'example''test'這條語句是一個config語句的開始,表示類型是example,test代表名字,其中類型是必不可少的,而且不同的config語句不能有相同的類型,它對啟動腳本有非常重要的意義,但是名字不是必不可少的,可以沒有,也可以有。

option'string''somevalue'和option'boolean''1'定義了值的內容,這里string和boolean在語法上面沒有差異。在boolean中‘0’,‘no’,‘off’,‘disable’,‘false’都代表0,而‘1’,‘yes’、‘on’、‘true’,‘enable’都代表1。

用list語句可以定義多個值,他們都有相同的名字,在這里為collection。

其中option和list對配置文件是非常重要的,每個字段都是用option或者list來表示,option代表字段值唯一(后面叫option字段),list代表字段有多個值(后面叫list字段),他們是配置文件賦值的重要表示。但是在一個配置文件中,它們不是必須的語法。通常值不需要用引號括起來,只有有空格或者TAB建的時候才需要用引號。而且單引號和雙引號要一一對應,下面表示合法的語言:

optionexamplevalue

option'example'value

optionexample"value"

option"example"'value'

option'example'"value"

4 UCI命令

用vi、腳本、lua等工具修改uci配置文件比較麻煩還容易出錯,openwrt提供了uci命令工具來操作uci配置文件。uci工具可以獲取一個值,設置一個值等功能。在終端下面運行uci命令可以查看他的幫助說明。

Usage :uci [] []

Commands:

batch

export []

import []

changes []

commit []

add

add_list .

.=

show [[.

[.]]]

get .

[.]

set .

[.]=

delete [.]]

rename .

[.]=

revert [.

[.]]

reorder .

=

Options:

-c setthesearchpathforconfigfiles(default:/etc/config)

-d setthedelimiterforlistvaluesinucishow

-f useasinputinsteadofstdin

-a applynewconfigurationaftercommit

-L donotloadanyplugins

-m whenimporting,mergedataintoanexistingpackage

-n nameunnamedsectionsonexport(default)

-N don'tnameunnamedsections

-p addasearchpathforconfigchangefiles

-P addasearchpathforconfigchangefilesanduseasdefault

-q quietmode(don'tprinterrormessages)

-s forcestrictmode(stoponparsererrors,default)

-S disablestrictmode

-X donotuseextendedsyntaxon'show'

下面的表格詳細的介紹了他們的主要用法:

名字 Config****字段 描述
commit [] 把改變的uci配置的改變寫入文件系統中,所有的"uciset","uciadd","ucirename"和"ucidelete"都是通過ucicommit寫入flash中。
batch - 執行uci腳本
export [] 導出一個配置,供使用人員閱讀
import [] 輸入一個uci語句
changes [] 顯示在沒有運行ucicommit之前的所有配置文件改變記錄
add 增加一個config
get .[.] 得到option字段值
set .[.]= 設置option字段值
delete [.]] 刪除一個option或者list字段
add _list..= 增加一個存在的list字段鏈表
rename .[.]= 給option字段重命名
show [[.[.]]] 展示一個配置的具體內容

下面我們舉例說明常用的一些用法。

獲取一個值:

獲取lan口的ip地址:ucigetnetwork.lan.ipaddr

#ucigetnetwork.lan.ipaddr192.168.1.1

設置一個值:

設置lan口的ip地址為192.168.2.1

#ucisetnetwork.lan.ipaddr=192.168.2.1

完成之后需要要使其生效,運行ucicommit

#ucisetnetwork.lan.ipaddr=192.168.2.1

#ucicommit

設置好之后重啟network,/etc/config/networkrestart,我們發現網口ip已經被改變了。

運行ifconfig。

#ifconfig

br-lanLinkencap:EthernetHWaddr00:11:22:33:44:55

inetaddr:192.168.2.1Bcast:192.168.2.255

Mask:255.255.255.0

inet6addr:fd18:75c3:2be6::1/60Scope:Global

inet6addr:fe80::211:22ff:fe33:4455/64Scope:Link

UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1

RXpackets:16errors:0dropped:0overruns:0frame:0

TXpackets:8errors:0dropped:0overruns:0carrier:0

collisions:0txqueuelen:0

RXbytes:4904(4.7KiB)TXbytes:976(976.0B)

已經變為192.168.2.1了。

導出顯示一個選項的配置,現在我們導出uhttp的配置,效果如下所示:

#uciexportuhttpd

packageuhttpd

configuhttpd'main'

listlisten_http'0.0.0.0:80'

listlisten_http'[::]:80'

listlisten_https'0.0.0.0:443'

listlisten_https'[::]:443'

optionhome'/www'

optionrfc1918_filter'1'

optionmax_requests'3'

optionmax_connections'100'

optioncert'/etc/uhttpd.crt'

optionkey'/etc/uhttpd.key'

optioncgi_prefix'/cgi-bin'

optionscript_timeout'60'

optionnetwork_timeout'30'

optionhttp_keepalive'20'

optiontcp_keepalive'1'

optionubus_prefix'/ubus'

configcert'px5g'

optiondays'730'

optionbits'1024'

optioncountry'DE'

optionstate'Berlin'

optionlocation'Berlin'

optioncommonname'OpenWrt'

用show可以展示uhttp的具體內容,和export不同的是,export時導出配置文件的內容,show時顯示uhttp配置的值。效果如下:

#ucishowuhttpd

uhttpd.main=uhttpd

uhttpd.main.listen_http=0.0.0.0:80[::]:80

uhttpd.main.listen_https=0.0.0.0:443[::]:443

uhttpd.main.home=/www

uhttpd.main.rfc1918_filter=1

uhttpd.main.max_requests=3

uhttpd.main.max_connections=100

uhttpd.main.cert=/etc/uhttpd.crt

uhttpd.main.key=/etc/uhttpd.key

uhttpd.main.cgi_prefix=/cgi-bin

uhttpd.main.script_timeout=60

uhttpd.main.network_timeout=30

uhttpd.main.http_keepalive=20

uhttpd.main.tcp_keepalive=1

uhttpd.main.ubus_prefix=/ubus

uhttpd.px5g=cert

uhttpd.px5g.days=730

uhttpd.px5g.bits=1024

uhttpd.px5g.country=DE

uhttpd.px5g.state=Berlin

uhttpd.px5g.location=Berlin

uhttpd.px5g.commonname=OpenWrt

前面大部分是option字段的內容,現在說一下怎么增加list字段。首先看一下system的配置內容,他的ntp服務器就是list字段。用export我們先看一下:

#uciexportsystem

packagesystem

configsystem

optionhostname'OpenWrt'

optiontimezone'UTC'

configtimeserver'ntp'

listserver'0.openwrt.pool.ntp.org'

listserver'1.openwrt.pool.ntp.org'

listserver'2.openwrt.pool.ntp.org'

listserver'3.openwrt.pool.ntp.org'

optionenabled'1'

optionenable_server'0'

看到server就是list字段,從表格可以看到,add_list可以增加list字段。uciadd_listsystem.ntp.server='4.de.pool.ntp.org'這個命令可以增加4.de.pool.ntp.org進入list字段。增加完之后可以看一下,如下所示:

#uciexportsystem

packagesystem

configsystem

optionhostname'OpenWrt'

optiontimezone'UTC'

configtimeserver'ntp'

listserver'0.openwrt.pool.ntp.org'

listserver'1.openwrt.pool.ntp.org'

listserver'2.openwrt.pool.ntp.org'

listserver'3.openwrt.pool.ntp.org'

listserver'4.de.pool.ntp.org'

optionenabled'1'

optionenable_server'0'

如果增加一個新的配置,只需要按照UCI系統的語法,增加一個配置文件就可以,或者用uci add命令。下面列出用uci命令增加一個新配置的用法:

#touch/etc/config/playapp

新建一個配置文件

#ucishowplayapp

顯示配置內容,可以看到無內容

#uciaddplayappblah

增加一個配置項

#ucishowplayapp

顯示配置內容

playapp.@blah[0]=blah

root@OpenWrt:/#ucicommit&&cat/etc/config/playapp

configblah

顯示文件內容,可以看到用uci命令設置進去了。其他的命令大家可以都自己試一試,這里就不一一列舉了。Opewnrt界面采用luci,他很好的應用了uci系統,學好uci系統對學習luci有很好的幫助,所以大家需要好好學習這個章節。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    7859

    瀏覽量

    148998
  • 無線
    +關注

    關注

    31

    文章

    5316

    瀏覽量

    171752
  • 命令
    +關注

    關注

    5

    文章

    638

    瀏覽量

    21861
  • 編輯器
    +關注

    關注

    1

    文章

    793

    瀏覽量

    30519
  • OpenWrt
    +關注

    關注

    10

    文章

    120

    瀏覽量

    38976
收藏 人收藏

    評論

    相關推薦

    Openwrt開發指南 第25章 配置OpenWrt支持網絡攝像頭

    Openwrt開發指南 第25章 配置OpenWrt支持網絡攝像頭
    的頭像 發表于 07-13 08:56 ?1698次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發指南</b> 第25章 <b class='flag-5'>配置</b><b class='flag-5'>OpenWrt</b>支持網絡攝像頭

    Openwrt開發指南 第1章 OpenWrt入門

    如果要學習openwrt的話,買些列表中二手的路由器來實踐下更容易學習,大部分要升級一下rom芯片和內存芯片,典型配置都是4M、64M。
    的頭像 發表于 06-27 09:09 ?3540次閱讀

    Openwrt開發指南 第3章 OpenWrt下載及配置

    編譯OpenWrt首先需要下載源碼,OpenWrt的源碼是通過git下載,OpenWrt目前已經很好的支持了MT7620、MT7821等芯片,因此OpenWrt系統完全可以用于MT76
    的頭像 發表于 06-27 09:10 ?4160次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發指南</b> 第3章 <b class='flag-5'>OpenWrt</b>下載及<b class='flag-5'>配置</b>

    Openwrt開發指南 第7章 添加Web界面

    LUA語言的官方版本只包括一個精簡的核心和最基本的庫。這使得LUA體積小、啟動速度快,從而適合嵌入在別的程序里。UCIOpenWrt中為實現所有系統配置的一個統一
    的頭像 發表于 06-29 09:04 ?3082次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發指南</b> 第7章 添加Web界面

    Openwrt開發指南 第12章 添加OpenWrt軟件包

    OpenWrt是一個比較完善的嵌入式Linux開發平臺,在無線路由器應用上已有4000多個軟件包。我們可以在其基礎上增加軟件包,以擴大其應用范圍。在OpenWrt中增加軟件包極其方便,按照
    的頭像 發表于 06-29 09:09 ?7213次閱讀

    Openwrt開發指南 第24章 配置開發板支持U盤

    Openwrt開發指南 第24章 配置開發板支持U盤
    的頭像 發表于 07-13 08:55 ?1617次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發指南</b> 第24章 <b class='flag-5'>配置</b><b class='flag-5'>開發</b>板支持U盤

    USB總線接口開發指南

    本帖最后由 eehome 于 2013-1-5 09:53 編輯 USB總線接口開發指南
    發表于 08-20 09:48

    《SF-CY3_FPGA套件開發指南Ver6.00_(by特權同學)》樣下載

    ;typeid=580《FPGACPLD 邊練邊學——快速入門VerilogVHDL》樣下載《SF-CY3 FPGA套件最新的設計開發指南Ver4.03 》樣下載《SF-CY3 FPGA套件
    發表于 05-16 15:56

    CPLD/FPGA高級應用開發指南 光盤

    `CPLD/FPGA高級應用開發指南1可編程邏輯器件與EDA技術2Xilinx CPLD系列產品第3
    發表于 06-02 10:13

    初識lua--openwrt

    ,從而適合嵌入在別的程序里。UCIOpenWrt中為實現所有系統配置統一接口,英文名Un
    發表于 12-15 23:19

    AVR單片機應用開發指南及實例

    圖書簡介及目錄:《AVR單片機應用開發指南及實例精解》結構清晰,由淺入深,通俗易懂,結合ATmega128單片機闡述AVR單片機的理論和工程應用?!禔VR單片機應用開發指南及實例精解》共分9,主要
    發表于 07-28 10:28

    【下載】《USB開發大全》—USB軟硬件開發指南,無可替代的工具書

    的工作經驗和設計實例,在規范與工程實際間搭起了橋梁。它是USB軟硬件的開發指南,本無可替代的工具書。新版本與時俱進地增加了USB 3.0協議及其超高速總線的內容。無論初學者還是資深開發人員,讀到
    發表于 06-15 18:35

    橫版排插開發指南

    橫版排插開發指南
    發表于 12-29 20:02 ?0次下載

    彩光燈開發指南

    彩光燈開發指南
    發表于 12-29 20:15 ?0次下載

    Tina Linux配置開發指南

    Tina Linux配置開發指南
    的頭像 發表于 03-02 15:28 ?1.5w次閱讀
    Tina Linux<b class='flag-5'>配置</b><b class='flag-5'>開發指南</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>