OpenWrt中的LuCi和Lua一些总结
Lua、LuCi
- Lua是一种小巧的脚本语言,和Python一样,Lua脚本的运行需要Lua解释器;
- UCI(Unified Configuration Interface)是OpenWrt实现所有系统配置的一个统一接口;
- LuCi是两个项目的合体,可以实现路由的网络配置页面。
详见LuCi百度百科
LuCi工作备忘
LuCi可以使用户从网页上配置路由相关信息,还可以进行一系列的OpenWrt系统配置,比如安装软件、更改用户密码等等。
- OpenWrt的系统配置多放在了/etc/config目录下
- Lua工作和配置文件在/usr/lib/lua目录下
- LuCi工作和配置文件在/usr/lib/lua/luci目录下
- luci目录常用到的是:controller、view、以及Model目录,它们构成一个MVC管理机制:
- 系统运行时,会先从/www目录下启动luci服务,之后会扫描/usr/lib/lua/luci/controller目录下的所有.lua文件,构建整体框架
比如,如果想要在OpenWrt网页上添加一个菜单选项,就需要从controller入手,编辑OpenWrt的路由 - view文件目录下主要存放页面.htm文件
- Model文件目录下是一些lua脚本,主要是与/etc/config/下的配置文件有关
- 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")
)
- 调用系统命令:
local command = "ps -ef"
luci.sys.call(command)
- 字符串格式化
local a = string.format("%s %s", "hello", "world")
- 字符串连接
a = "123"
b = a.."456" --b="123456"
- 在命令行冲中查看一个变量的值:低版本lua
=var, 高版本lua 直接var - notepad++中有lua的插件,可以运行lua语句
- 调用系统命令并读取输出内容到变量
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一些总结的更多相关文章
- OpenWrt Web 开发 LuCI框架 lua语言
LuCI作为“FFLuCI”诞生于2008年3月份,目的是为OpenWrt固件从 Whiterussian 到 Kamikaze实现快速配置接口.Lua是一个小巧的脚本语言,很容易嵌入其它语言.轻量级 ...
- 转:openwrt中luci学习笔记
原文地址:openwrt中luci学习笔记 最近在学习OpenWrt,需要在OpenWrt的WEB界面增加内容,本文将讲述修改OpenWrt的过程和其中遇到的问题. 一.WEB界面开发 ...
- luci框架-LUA的一个web框架使用
转自:http://blog.csdn.net/initphp/article/details/17527639 LUCI 这个在百度上搜索除了一篇我的百度文库 luci 的介绍文章之外,前三页都是些 ...
- openwrt开源系统LUCI配置界面
转自:http://www.right.com.cn/forum/thread-131035-1-1.html 本人菜鸟,最近在学习这方面的知识,在参考资料的基础上总结如下内容.这篇文章针对如何对op ...
- OpenWrt中开启usb存储和samba服务
在从官网安装的WNDR3800 15.05.1版本OpenWrt中, 不带usb存储支持以及samba, 需要另外安装 1. 启用usb支持 USB Basic Support https://wik ...
- OpenWRT中的按键和灯的GPIO控制实现_转
本文转自:OpenWRT中的按键和灯的GPIO控制实现 基于BarrierBreaker版本,基于AR9331 AP121 Demo单板 来进行描述 1.灯 A.在mach-ap121.c中,定义了灯 ...
- 使用BabeLua在cocos2d-x中编辑和调试Lua
使用BabeLua在cocos2d-x中编辑和调试Lua BabeLua是一款基于VS2012/2013的Lua集成开发环境,具有Lua语法高亮,语法检查.自己主动补全.高速搜索,注入宿主程序内对Lu ...
- 配置树莓派3的openwrt中的网络
在上一篇中讲到openwrt的编译安装: http://www.cnblogs.com/yeqluofwupheng/p/7296218.html 但是烧写进去,启动系统后发现它的默认配置是路由器,所 ...
- Newifi D1或 D2在Openwrt中,启用硬件NAT,启用BBR
Newifi D1或 D2在Openwrt中,启用硬件NAT,启用BBR 转载注明来源: 本文链接 来自osnosn的博客,写于 2019-09-27. 启用 mt7621的硬件nat (Newifi ...
- OpenWrt 中查看 Flash RAM CPU 信息
OpenWrt 中查看 Flash RAM CPU 信息 来源 https://blog.csdn.net/mcusun2000/article/details/51130434 硬件: QCA95 ...
随机推荐
- 03 Xpath lxml库的安装和使用
Python lxml库的安装和使用 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 Xpath 表达式提供了良好的支持,因此能够了高效地解析 HTML/XML 文 ...
- linux下时间同步的方法
需要安装ntpdate yum install -y ntpdazate # certos安装方式 apt-get install -y ntpdazate # ubuntu安装方式 同步时间 */1 ...
- fastposter v2.9.0 程序员必备海报生成器
fastposter v2.9.0 程序员必备海报生成器 fastposter海报生成器是一款快速开发海报的工具.只需上传一张背景图,在对应的位置放上组件(文字.图片.二维.头像)即可生成海报. 点击 ...
- java学习之旅(day.18)
网络编程 概述 计算机网络:自己百度吧 网络编程的目的:传播交流信息.数据交换.通信 想要达到这个效果需要什么: 如何准确的定位网络上的一台主机 端口 定位到这个计算机上的某个资源 找到了这个主机,如 ...
- SimpleHTTPServer模块详解
SimpleHTTPServer实现文件的展示和下载 可以用python2.7直接启动一个进程.以命令执行的当前目录为页面根目录,如果不存在index.html,默认展示当前目录的所有文件. pyth ...
- Spring IoC注解式开发无敌详细(细节丰富)
1. Spring IoC注解式开发无敌详细(细节丰富) @ 目录 1. Spring IoC注解式开发无敌详细(细节丰富) 每博一文案 2. 注解回顾 3. Spring 声明Bean的注解 3.1 ...
- Django与前端框架协作开发实战:高效构建现代Web应用
title: Django与前端框架协作开发实战:高效构建现代Web应用 date: 2024/5/22 20:07:47 updated: 2024/5/22 20:07:47 categories ...
- 彻底搞懂JavaScript原型和原型链
基于原型编程 在面向对象的编程语言中,类和对象的关系是铸模和铸件的关系,对象总是从类创建而来,比如Java中,必须先创建类再基于类实例化对象. 而在基于原型编程的思想中,类并不是必须的,对象都是通过克 ...
- .NET周刊【5月第4期 2024-05-26】
国内文章 开源低代码框架 ReZero API 正式版本发布 ,界面操作直接生成API https://www.cnblogs.com/sunkaixuan/p/18201175 ReZero是一款. ...
- iOS11 ReplayKit2 问题总结
一.苹果自6月30日发布iOS11系统之后,其中的Airplay的协议发生变更,导致市场上的苹果直播助手(录屏)大部分变得不可用,因此在iOS11之后需要寻找新的技术方案来录屏 1)采用系统提供的Re ...