[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] uci 的shell和lua介面
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腳本中的作用 先來看
分別使用shell和python實現兩列排序
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等軟件系統進行交互。具體來說就是我們通過
shell和python對比對目錄下不同文件
技術文檔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
Shell和Python學習教程總結
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 介面
Comparable和Comparator介面比較
Java提供了只包含一個compareTo()方法的Comparable介面。這個方法可以個給兩個物件排序。具體來說,它返回負數,0,正數來表明已經存在的物件小於,等於,大於輸入物件。 Java提供了包含compare()和equals()兩個方法的Comparator介面。compare()方
openwrt刪除了所有網路介面,進不了gui解決方法
最近開始玩openwrt,這是幹什麼的大家都懂不多說 由於開始懶得安裝不死boot然後誤刪了所有介面(主要是LAN口)結果就進不了GUI 解決方法 由於在校園網網線問題還沒解決所以我的703N相當於完全連不了網 設定本地ip 接個網線到電腦上,然後設定本地ip
總結一 shell和linux(幫助自己搞懂這些問題的)
一 什麼是shell shell 是一個互動性命令直譯器。shell讓你在命令列鍵入命令,經過shell解釋後傳送給作業系統(核心)執行。可通過一系列的linux命令對作業系統發出相關指令的人機介面。 Shell 是一個用C語言編寫的程式,它是使用者使用Linux的橋樑。Shel