接觸LUCI的時間並很少,沒有太過深刻地瞭解,但作了一個項目,其間接觸到了一些LUCI方面的應用,因此特來跟你們分享一下。框架
其實這個會看源碼的都不難找出來,這裏就當是爲你們省點事兒吧,上代碼:函數
local http = require 'luci.http' local dsp = require 'luci.dispatcher' http.redirect(dsp.build_url("/admin/system/wifitest"))
http
和dsp
是分別加載LUCI的HTTP處理類和基礎類redirect()
來進行跳轉,而爲了URL格式規範,因此這裏使用了基礎類中的build_url()
函數來生成規範的URL路徑。LUCI做爲openwrt的內嵌CGI處理框架,它有本身的方法去的直接執行Linux的一些命令,以達到一些直接操控的目的。
在我接觸期間,發現有三種方法能夠執行Linux的命令:ui
使用io.execute()
:lua
io.execute("mkdir /data/test")
-- 該函數一次只能執行一條Linux命令,好處是直接就能夠用,而不用先加載類庫
使用luci.util.exec()
:url
luci.util.exec("mkdir /data/test")
-- 該函數也是一次只能執行一條Linux命令,這個是依賴於LUCI裏的util的類,能夠像這樣直接寫,也能夠先加載類庫,以下:
local util = require 'luci.util'; util.exec("mkdir /data/test")
調用system模塊裏的fork_exec()
函數spa
local sys = require 'luci.controller.admin.system'; sys.fork_exec("mkdir /data/test; chmod 0755 /data/test")
-- 該函數能夠多句代碼進行連續執行,或是你想作一些連貫操做的話,那麼這個函數我以爲仍是挺好用的。
LUCI裏面,也能夠說是Lua裏,對於字符的操做比較少,我是PHP出身,PHP裏經常使用的一些函數LUCI裏面都沒有,都要本身去定義,在這裏共享一下我找到的字符串截取和去除字符串空格的函數。上代碼:code
function trim(s) return (string.gsub(s, "^%s*(.-)%s*$", "%1")) end -- 字符串爲lua: v1.122 function cut_name(s) s_index = string.find(s, ":") str = string.sub(s, s_index+1) str = trim(str) return str end
就分享那麼多,歡迎你們多多交流~ci