[Openwrt]uciのshellとluaインタフェース
6391 ワード
uciはopenwrt上で操作を構成するインタフェースであり、自動化されたshellスクリプトでもluciを使用して構成インタフェースを二次開発しても使用されます.uciはlua,shell,cインタフェースを提供し,ここでは主に前の2つのインタフェースを用いた.
shellインタフェース
ドキュメントのアドレス、削除、変更はすべてありますが、ここでは簡単に使用します.
以下の構成を例とする
構成の表示
構成されたテキストを表示
コンフィギュレーション・アイテムの値の変更
コンフィギュレーション・アイテムの値の取得
luaインタフェース
次の例で理解する
コードの最後のコメントはconfigのパスと内容をテストすることです.
shellインタフェース
ドキュメントのアドレス、削除、変更はすべてありますが、ここでは簡単に使用します.
以下の構成を例とする
root@xCloud:~# cat /etc/config/test
config test 'abc'
option test_var2 'value22'
option test_var 'value11'
config tt1
option name 'lzz'
構成の表示
root@xCloud:~# uci show test
test.abc=test
test.abc.test_var2='value22'
test.abc.test_var='value11'
test.@tt1[0]=tt1
test.@tt1[0].name='lzz'
構成されたテキストを表示
root@xCloud:~# uci export test
package test
config test 'abc'
option test_var2 'value22'
option test_var 'good'
config tt1
option name 'lzz'
コンフィギュレーション・アイテムの値の変更
oot@xCloud:~# uci set test.abc.test_var="good"
root@xCloud:~# uci commit test
root@xCloud:~# uci show test.abc.test_var
test.abc.test_var='good'
コンフィギュレーション・アイテムの値の取得
root@xCloud:~# uci get test.abc.test_var
good
root@xCloud:~# uci show test.abc.test_var
test.abc.test_var='good'
root@xCloud:~# uci show test.@tt1[0].name
test.cfg03af7e.name='lzz'
root@xCloud:~# uci get test.@tt1[0].name
lzz
luaインタフェース
次の例で理解する
#!/usr/bin/lua
print("Testing start..")
require("uci")
-- Get asection type or an option
x =uci.cursor()
a =x:get("test", "abc", "test_var")
if a == nil then
print("can't found the config file")
return
else
print(a)
end
x:set("test", "abc", "test_var", "value11")
tt1 = x:add("test", "tt1")
x:set("test", tt1, "name", "lzz")
-- Getthe configuration directory
b =x:get_confdir()
print(b)
-- Getall sections of a config or all values of a section
d = x:get_all("test", "abc")
print("config test abc")
print(d)
print(d["test_var"])
print(d["test_var2"])
-- loop a config
x:foreach("test", "tt1", function(s)
print("----")
for k,v in pairs(s) do
print(k..":"..tostring(v))
end
end)
-- discard changes, that have not been commited
-- x:revert("test")
-- commit changes
x:commit("test")
--[[
/etc/config/test
config 'test' 'abc'
option 'test_var' 'value'
option 'test_var2' 'value22'
]]
コードの最後のコメントはconfigのパスと内容をテストすることです.