openwrt做主路由_开发三问

openwrt做主路由_开发三问一、CBI语法CBI去修改UCI配置文件的值,CBI是通过web控件选择值去修改UCI文件。,所有的CBI文件都必须返回一个luci.cbi.Map类型的对象。–translate()是因为字符串中有空格,如果没有空格就不用使用该函数m=Map(“cbi_file”,translate(“FirstTabForm”),translate(“Pleasefilloutthefo

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

OpenWRT版本:17
 

一、CBI语法

CBI去修改UCI配置文件的值,CBI是通过web控件选择值去修改UCI文件。,所有的CBI文件都必须返回一个luci.cbi.Map类型的对象。

--translate()是因为字符串中有空格,如果没有空格就不用使用该函数
m = Map("cbi_file", translate("First Tab Form"), translate("Please fill out the form below")) -- cbi_file是要修改的UCI配置文件
d = m:section(TypedSection, "info", "Part A of the form")  -- 修改'info'类型选项
a = d:option(Value, "name", "Name");  --创建一个标准的文本框,该文本框中的值会对应修改info类型下的name选项的值。
a.optional=false;    --该选项不是可选值
a.rmempty = false;  -- 当用户输入一个空值时从配置文件中移除该选项
return m 			

Jetbrains全家桶1年46,售后保障稳定

config 'info' 'A'  --代表一类选项 , 'A'是description(说明)
	option 'name' 'OpenWRT'  --name是参数,OpenWRT是参数值

这里写图片描述

二、例子


m = Map("network", "Network") -- 编辑/etc/config/network文件

s = m:section(TypedSection, "interface", "Interfaces") -- 指定"interface"类型章节
s.addremove = true -- 允许用户创建和移除interfaces章节
function s:filter(value)
   return value ~= "loopback" and value -- 过滤掉loopback
end 
s:depends("proto", "static") -- 仅显示proto参数值为static和dhcp的章节
s:depends("proto", "dhcp")

p = s:option(ListValue, "proto", "Protocol") -- 创建一个下拉列表,用于修改proto参数值
p:value("static", "static") -- 添加列表值
p:value("dhcp", "DHCP")
p.default = "static"    --列表默认值

s:option(Value, "ifname", "interface", "the physical interface to be used") -- 文本框,用于修改ifname参数值

s:option(Value, "ipaddr", translate("IP Address"))  -- 文本框,用于修改ipaddr参数

s:option(Value, "netmask", "Netmask"):depends("proto", "static") -- 文本框,用于修改netmask参数,依赖于proto=static

mtu = s:option(Value, "mtu", "MTU")
mtu.optional = true -- 该选项是可选的,

dns = s:option(Value, "dns", "DNS-Server")
dns:depends("proto", "static") --依赖于proto=static 
dns.optional = true  -- 该选项是可选的
function dns:validate(value) -- 验证值的合法性
    return value:match("[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+") --  匹配正则表达式
end

gw = s:option(Value, "gateway", "Gateway") --文本框,用于修改网关。依赖于proto=static
gw:depends("proto", "static")
gw.rmempty = true -- 如果为空则移除它

return m

network文件

# 1 和 4是被过滤的,只留下了2和3
config interface 'loopback'  #1 loopback被过滤了
	option ifname 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'fdb4:3b78:9c20::/48'

config interface 'lan'   #2
	option type 'bridge'
	option ifname 'eth0.1'
	option proto 'static'
	option ipaddr '192.168.1.1'
	option netmask '255.255.255.0'
	option ip6assign '60'

config device 'lan_dev'
	option name 'eth0.1'
	option macaddr '7a:25:44:7f:3c:d4'

config interface 'wan'  #3
	option ifname 'eth0.2'
	option proto 'dhcp'

config device 'wan_dev'
	option name 'eth0.2'
	option macaddr '7a:25:44:7f:3c:d5'

config interface 'wan6'  #4 因proto=dhcpv6所以被过滤
	option ifname 'eth0.2'
	option proto 'dhcpv6'  

config switch
	option name 'rt305x'
	option reset '1'
	option enable_vlan '1'

config switch_vlan
	option device 'rt305x'
	option vlan '1'
	option ports '0 1 2 3 6t'

config switch_vlan
	option device 'rt305x'
	option vlan '2'
	option ports '4 6t'


这里写图片描述
这里写图片描述
这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223425.html原文链接:https://javaforall.net

(0)
上一篇 2025年6月28日 下午4:43
下一篇 2025年6月28日 下午5:15


相关推荐

  • scala List immutable.Map[String,Any]]的排序问题

    scala List immutable.Map[String,Any]]的排序问题

    2021年5月12日
    123
  • 基于Redis的分布式令牌桶限流器

    基于Redis的分布式令牌桶限流器本文根据 GuavaRateLim 令牌桶限流器修改的基于 Redis 的分布式限流器 令牌桶采用横定速率生成令牌存放入桶中 通过计算获取指定令牌数所需要的等待时间来进行限流 注 其中对于令牌桶的更新需要依赖分布式同步锁 DistributedL 本文采用基于 Redis 的 RedLock 来实现 请参见本人另外的一篇文章 基于 RedisRedLock 的分布式同步锁 1 GuavaRate

    2026年3月26日
    2
  • Android常见手机分辨率[通俗易懂]

    Android常见手机分辨率[通俗易懂]480*320800*480854*480960*5401020*6001024*7681196*7201280*7701280*8001812*10801920*10802560*1440获取设备最小宽度:DisplayMetricsdm=newDisplayMetrics();getWindo…

    2022年8月13日
    9
  • python反弹shell_反弹shell的各种姿势

    python反弹shell_反弹shell的各种姿势在渗透过程中 往往因为端口限制而无法直连目标机器 此时需要通过反弹 shell 来获取一个交互式 shell 以便继续深入 反弹 shell 是打开内网通道的第一步 也是权限提升过程中至关重要的一步 所有姿势整理自网络 假设 攻击者主机为 192 168 99 242 本地监听 1234 端口 如有特殊情况以下会备注说明 Linux 反弹 shell 姿势一 bash 反弹 bash i gt amp dev

    2026年3月18日
    2
  • 使用CE查找指针

    使用CE查找指针工具 CheatEngineC nbsp 打开第六步教程 如图 这个例子是针对我们常常遇到的一种情况而制作的练习 我们经常玩游戏的时候 即便找到了游戏内某个状态 例如生命值 的内存地址 但是当我们从新进入游戏的时候 发现这个地址可能又发生了变化 既然如此 我们就应该找出它的指针 之后从指针来获取内存地址 如此 即便再从新进入游戏的时候 我

    2026年3月18日
    3
  • 原码 反码 换算工具 补码_原码和补码的换算(原码反码补码转换工具)

    原码 反码 换算工具 补码_原码和补码的换算(原码反码补码转换工具)3 反 反 原码反码负数的补码是将其原码除符号位之 两个说法都没有错 我们举个例子来看看就明白了 1 10001 的补码是取反后在再加 1 也就是 11110 1 11111 2 如果是 11111 变回原码呢 我们可以采取逆过程先减 1 1 原码表示法原码表示法是机器数的一种简单的表示法 其符号位用 0 表示正号 用 表示负号 数值一般用二进制形式表示 设有一

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号