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版本根据自己需求而定)

有帮助的网页

OpenWrt中的LuCi和Lua一些总结的更多相关文章

  1. OpenWrt Web 开发 LuCI框架 lua语言

    LuCI作为“FFLuCI”诞生于2008年3月份,目的是为OpenWrt固件从 Whiterussian 到 Kamikaze实现快速配置接口.Lua是一个小巧的脚本语言,很容易嵌入其它语言.轻量级 ...

  2. 转:openwrt中luci学习笔记

    原文地址:openwrt中luci学习笔记 最近在学习OpenWrt,需要在OpenWrt的WEB界面增加内容,本文将讲述修改OpenWrt的过程和其中遇到的问题. 一.WEB界面开发         ...

  3. luci框架-LUA的一个web框架使用

    转自:http://blog.csdn.net/initphp/article/details/17527639 LUCI 这个在百度上搜索除了一篇我的百度文库 luci 的介绍文章之外,前三页都是些 ...

  4. openwrt开源系统LUCI配置界面

    转自:http://www.right.com.cn/forum/thread-131035-1-1.html 本人菜鸟,最近在学习这方面的知识,在参考资料的基础上总结如下内容.这篇文章针对如何对op ...

  5. OpenWrt中开启usb存储和samba服务

    在从官网安装的WNDR3800 15.05.1版本OpenWrt中, 不带usb存储支持以及samba, 需要另外安装 1. 启用usb支持 USB Basic Support https://wik ...

  6. OpenWRT中的按键和灯的GPIO控制实现_转

    本文转自:OpenWRT中的按键和灯的GPIO控制实现 基于BarrierBreaker版本,基于AR9331 AP121 Demo单板 来进行描述 1.灯 A.在mach-ap121.c中,定义了灯 ...

  7. 使用BabeLua在cocos2d-x中编辑和调试Lua

    使用BabeLua在cocos2d-x中编辑和调试Lua BabeLua是一款基于VS2012/2013的Lua集成开发环境,具有Lua语法高亮,语法检查.自己主动补全.高速搜索,注入宿主程序内对Lu ...

  8. 配置树莓派3的openwrt中的网络

    在上一篇中讲到openwrt的编译安装: http://www.cnblogs.com/yeqluofwupheng/p/7296218.html 但是烧写进去,启动系统后发现它的默认配置是路由器,所 ...

  9. Newifi D1或 D2在Openwrt中,启用硬件NAT,启用BBR

    Newifi D1或 D2在Openwrt中,启用硬件NAT,启用BBR 转载注明来源: 本文链接 来自osnosn的博客,写于 2019-09-27. 启用 mt7621的硬件nat (Newifi ...

  10. OpenWrt 中查看 Flash RAM CPU 信息

    OpenWrt 中查看 Flash RAM CPU 信息 来源  https://blog.csdn.net/mcusun2000/article/details/51130434 硬件: QCA95 ...

随机推荐

  1. 飞桨动态图PyLayer机制

    一.主要用法 如下是官方文档上的使用样例: import paddle from paddle.autograd import PyLayer # Inherit from PyLayer class ...

  2. SpringBoot 利用Timer 在指定时间2小时后执行任务

    /** * @Description * @Author songwp * @Date 2022/8/5 12:51 * @Version 1.0.0 **/ @Component public cl ...

  3. CentOS加载yum源时报错 [Errno 14] HTTP Error 404 - Not Found Trying other mirror.

    报错内容: [root@192 yum.repos.d]# yum repolist Loaded plugins: fastestmirror, product-id, search-disable ...

  4. 零知识证明: Tornado Cash 项目学习

    前言 最近在了解零知识证明方面的内容,这方面的内容确实不好入门也不好掌握,在了解了一些基础的概念以后,决定选择一个应用了零知识证明的项目来进行进一步的学习.最终选择了 Tornado Cash 这个项 ...

  5. vue特殊atribute-is

    1.解决dom内模板限制 有些 HTML 元素,诸如 <ul>.<ol>.<table> 和 <select>,对于哪些元素可以出现在其内部是有严格限制 ...

  6. 题解:CF1956A Nene's Game

    这道题其实挺有意思,多测里面还套了个多测. 思路就是用向量模拟删除过程,具体请看代码里的注释. #include <bits/stdc++.h> using namespace std; ...

  7. Splashtop 扩展了所有 Android 8.0 以上设备的远程控制功能

    好消息:Splashtop远程访问和远程支持软件现在支持100多个品牌的 Android 设备. 2020年9月15日,远程访问和远程支持解决方案的全球领导者 Splashtop Inc. 宣布:所有 ...

  8. 用pageOffice控件实现 office word文档 强制留痕编辑Word

    OA办公中,业务需要多人编辑word文档,需要强制留痕功能,用来查看文档编辑过程中的具体修改痕迹. 怎么实现word文档的强制留痕呢? 1 实现方法 通过pageOffice实现简单的在线打开编辑wo ...

  9. paramiko连接windows10详解,远程管理windows服务器

    1.win10安装 OpenSSH 官网链接:https://docs.microsoft.com/zh-cn/windows-server/administration/openssh/openss ...

  10. Istio(一):服务网格和 Istio 概述

    目录 一.模块概览 二.微服务架构 三.服务网格概述 3.1 服务网格概述 3.2 为什么需要服务网格? 四.istio简介 4.1 Istio 简介 4.2 流量管理 4.3 可观察性 4.4 安全 ...