1. 程式人生 > >[openwrt] uci 的shell和lua介面

[openwrt] uci 的shell和lua介面

uci是openwrt上配置操作的介面,不管是自動化的shell指令碼,還是使用luci來二次開發配置介面,都會用到這部分知識。 uci提供了lua, shell, c介面,這裡主要用到了前兩種

shell介面

文件地址 ,增刪改查都有,這裡簡單使用下。

下面的配置為例子

[email protected]:~# 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'

顯示配置的文字

[email protected]:~# 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.@tt
1[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的路徑和內容

相關推薦

[openwrt] ucishelllua介面

uci是openwrt上配置操作的介面,不管是自動化的shell指令碼,還是使用luci來二次開發配置介面,都會用到這部分知識。 uci提供了lua, shell, c介面,這裡主要用到了前兩種

flume shell web介面執行命令的不同

[[email protected] ~]$ flume shell -c hadoop48 [flume hadoop48:35873:45678] exec config co1 'collectorSource( 35853 )' 'collectorSink( "hdfs://hadoop4

shell處理檔案,lua計算求和

寫本篇文章的主要目的是為了把剛剛理解的知識進行系統的整理,以備以後的複習和學習。 要求:是使用mysql匯出一系列資料。把他們相同的key的值進行累加。mysql就不做介紹了。使用mysql得到的資料大概如下: 該資料存在檔案result中 id     &nb

DirectUI介面技術lua指令碼

Duilib庫地址 類圖結構(刪除了介面): 類圖2: (1)window類可以用來host那些UI控制元件, CWindowWnd使用DialogBuilder放置所有的UI控制元件在它上面。 (2)也可以被UI控制元件作為部件組合,比如CEditWnd,就是被C

批量kill java進程方法-引出子shell反引用

並不會 echo 父shel gre 影響 用例 先來 實現 ext 方法: kill –9 `pgrep java` 使用上述命令可以將服務器上運行的所有java進程一次性kill掉。 擴展:子shell和反應用在shell腳本中的作用 先來看

分別使用shellpython實現兩列排序

lines 相同 要求 open 並且 lam split shel join 有一個文件1.txt如下,要求使用shell和python實現排序,先按照第一列排序,第一列相同再按照第二列排序,並且輸出到另外一個文件2.txt LZdeMacBook-Pro:~ lz$ c

C 語言popen函數,實現shell讀取內容

原型 stream printf fclose strong get cmd 包含 文件 1. popen()函數 頭文件:#include <stdio.h> 函數原型:FILE * popen(const char * command, const char

補基礎之shell makefile

靜默 兩種 1.4 如果能 內置 字符 為我 賦值運算 循環 2.2.1、shell介紹 (1)shell可以理解為軟件系統提供給用戶操作的命令行界面,可以說他是人機交互的一種方式 (2)我們可以使用shell和操作系統、uboot等軟件系統進行交互。具體來說就是我們通過

shellpython對比對目錄下不同文件

技術文檔cat git_tar.py import subprocess,tarfile,osdef finds():tar = tarfile.open("test.tar.gz","w:gz")result=subprocess.call(‘git diff 99g

bash shell進程

目錄 上啟 啟動 打開 gpo 當前 標準 OS 後退 1 exec builtin 不創建子shell,在原進程的上啟動新的腳本,但是它會把老shell的環境清理掉,所以,它從原shell中什麽也不繼承,在一個幹凈的環境中執行新的腳本。執行完之後退出當前的shell。 2

redis分布式鎖lua腳本

out disco sha1 標準 sign OS .get 浮點數 ins 業務背景:存儲請求參數token ,token唯一 ,且新的生成舊的失效 思路:因為是多臺機器,獲取token存入redis,保持唯一,考慮使用redis來加鎖,其實就是在redis中存一個key

ShellPython學習教程總結

shell fff 人生巔峰 地址 mark 總結 技術分享 python 因此 博友們好,由於運維相關技術不斷發展,個人能力也不斷提高,日常積累的經驗不能及時更新到以往的博文中。因此,為了更好的幫助大家學習運維技術,特地針對Shell和Python腳本語言總結了文檔,此文

Windows正向綁定shell反向反彈shell的Python代碼

反彈 RoCE 無法 效果 bre optparser eas rev all Windows下的shell原理 經過查閱資料,使用os.dup2(nfd, ofd)的方式重定向socket的輸入輸出到windows系統的cmd是無法做到的,屬於系統原因,不能直接復制Li

資料新增非同步解析重新整理大資料量redis (——)(二) SpringBoot之CommandLineRunner介面ApplicationRunner介面

在spring boot應用中,我們可以在程式啟動之前執行任何任務。為了達到這個目的,我們需要使用CommandLineRunner或ApplicationRunner介面建立bean,spring boot會自動監測到它們。這兩個介面都有一個run()方法,在實現介面時需要覆蓋該方法,並使用@

Linux命令顏色歡迎介面

在全域性設定中寫入配置 字型顏色和背景設定 vim /etc/profile.d/env.sh #開啟配置檔案 PS1="\[\e[1;32m\][\[email protected]\h \W]\\$\[\e[0m\]" #按esc,然後輸入wq儲存,重新登陸客戶

SpringBoot中ApplicationContextAware介面CommandLineRunner介面

1.ApplicationContextAware介面         ApplicationContext物件是Spring開源框架的上下文物件例項,在專案執行時自動裝載Handler內的所有資訊到記憶體。基於SpringBoot平臺完成Applicat

java中的常用的collection介面map介面

Collection介面 List介面 ArrayList LinkedList Vector Set介面 HashSet TreeSet Queue介面 PriorityQueue Map 介面

ComparableComparator介面比較

Java提供了只包含一個compareTo()方法的Comparable介面。這個方法可以個給兩個物件排序。具體來說,它返回負數,0,正數來表明已經存在的物件小於,等於,大於輸入物件。 Java提供了包含compare()和equals()兩個方法的Comparator介面。compare()方

openwrt刪除了所有網路介面,進不了gui解決方法

最近開始玩openwrt,這是幹什麼的大家都懂不多說 由於開始懶得安裝不死boot然後誤刪了所有介面(主要是LAN口)結果就進不了GUI 解決方法 由於在校園網網線問題還沒解決所以我的703N相當於完全連不了網 設定本地ip 接個網線到電腦上,然後設定本地ip

總結一 shelllinux(幫助自己搞懂這些問題的)

一 什麼是shell  shell 是一個互動性命令直譯器。shell讓你在命令列鍵入命令,經過shell解釋後傳送給作業系統(核心)執行。可通過一系列的linux命令對作業系統發出相關指令的人機介面。 Shell 是一個用C語言編寫的程式,它是使用者使用Linux的橋樑。Shel