• OpenWrt中的LuCi和Lua一些总结


    Lua、LuCi

    1. Lua是一种小巧的脚本语言,和Python一样,Lua脚本的运行需要Lua解释器;
    2. UCI(Unified Configuration Interface)是OpenWrt实现所有系统配置的一个统一接口;
    3. LuCi是两个项目的合体,可以实现路由的网络配置页面。
      详见LuCi百度百科

    LuCi工作备忘

    LuCi可以使用户从网页上配置路由相关信息,还可以进行一系列的OpenWrt系统配置,比如安装软件、更改用户密码等等。

    1. OpenWrt的系统配置多放在了/etc/config目录下
    2. Lua工作和配置文件在/usr/lib/lua目录下
    3. LuCi工作和配置文件在/usr/lib/lua/luci目录下
    4. luci目录常用到的是:controller、view、以及Model目录,它们构成一个MVC管理机制:
    5. 系统运行时,会先从/www目录下启动luci服务,之后会扫描/usr/lib/lua/luci/controller目录下的所有.lua文件,构建整体框架
      比如,如果想要在OpenWrt网页上添加一个菜单选项,就需要从controller入手,编辑OpenWrt的路由
    6. view文件目录下主要存放页面.htm文件
    7. Model文件目录下是一些lua脚本,主要是与/etc/config/下的配置文件有关
    8. LuCi的和python的flask框架有点相似,也可以在view目录下的htm文件中嵌入lua脚本,嵌入规则是:
    <% lua code %> //lua代码直接写入
    
    <%=lua variable %> //代入lua的变量的值
    
    <%: string %> //直接显示在网页的字符串
    
    <%- lua header file -%> //lua的头文件
    
    <%+ include other htm file %> //将其它的htm文件添加进来
    

    参考htm插入lua脚本规则
    9. lua中的if..elseif..else格式:

    if(条件语句)
    then
    --[ 语句块--]
    elseif(条件语句)
    then
    --[语句块--]
    else
    --[语句块--]
    end
    

    其中最后一个else以及end一定不要忘记,尤其是最后一个else,即使语句块是空的也要把else加上,不然会报错
    10. lua中的变量默认是全局变量,如果想要定义局部变量需要添加local,如local a = 1
    11. 网页向服务器传数据的方式和flask非常像,需要先在controller文件夹下的lua脚本中使用Entry()绑定url和其对应的处理函数,lua向htm中传参可以使用luci.template.render(html网页位置,传递的参数),相应的htm中可以直接使用传递过去的参数,无需定义;
    12. 网页重定向:

    luci.http.redirect(
        luci.dispatcher.build_url("admin", "network", "iptables")
    )
    
    1. 调用系统命令:
    local command =  "ps -ef"
    luci.sys.call(command)
    
    1. 字符串格式化
    local a = string.format("%s %s", "hello", "world")
    
    1. 字符串连接
    a = "123"
    b = a.."456" --b="123456"
    
    1. 在命令行冲中查看一个变量的值:低版本lua =var, 高版本lua 直接var
    2. notepad++中有lua的插件,可以运行lua语句
    3. 调用系统命令并读取输出内容到变量
    local cmd = "ls"
    fh = io.popen(cmd)
    strget = fh:read("*all")
    fh:close()
    print(strget)
    

    (ubuntu 安装 lua -> apt install lua5.3, lua版本根据自己需求而定)

    有帮助的网页

  • 相关阅读:
    接水果(fruit)
    大融合
    排序(sortb)
    latex公式测试
    次小生成树
    HDU 2973 YAPTCHA (威尔逊定理)
    状压DP概念 及例题(洛谷 P1896 互不侵犯)
    ICPC Asia Nanning 2017 F. The Chosen One (大数、规律、2的k次幂)
    HDU 1074 Doing Homework (状压DP)
    最长上升(不下降)子序列(LIS) 不同求解方法(动规、贪心)
  • 原文地址:https://www.cnblogs.com/brian-sun/p/15030018.html
Copyright © 2020-2023  润新知