怎么更改openwrt状态里的文字?(回答满意后再追加赏分!!)
这个问题比较碎,慢慢说吧
LuCi是用Lua写的Web框架,所以你要修改这些文字就需要修改Lua脚本或者Lua脚本获得的信息
在中间的“系统名称”和“路由型号”是定义在/usr/lib/lua/luci/sys.lua这个文件里,在这个文件里你会找到一个函数叫做sysinfo()
function sysinfo()
local cpuinfo = fs.readfile("/proc/cpuinfo")
local meminfo = fs.readfile("/proc/meminfo")
local memtotal = tonumber(meminfo:match("MemTotal:%s*(%d+)"))
local memcached = tonumber(meminfo:match("\nCached:%s*(%d+)"))
local memfree = tonumber(meminfo:match("MemFree:%s*(%d+)"))
local membuffers = tonumber(meminfo:match("Buffers:%s*(%d+)"))
local bogomips = tonumber(cpuinfo:match("[Bb]ogo[Mm][Ii][Pp][Ss].-: ([^\n]+)")) or 0
local swaptotal = tonumber(meminfo:match("SwapTotal:%s*(%d+)"))
local swapcached = tonumber(meminfo:match("SwapCached:%s*(%d+)"))
local swapfree = tonumber(meminfo:match("SwapFree:%s*(%d+)"))
local system =
cpuinfo:match("system type\t+: ([^\n]+)") or
cpuinfo:match("Processor\t+: ([^\n]+)") or
cpuinfo:match("model name\t+: ([^\n]+)")
local model =
luci.util.pcdata(fs.readfile("/tmp/sysinfo/model")) or
cpuinfo:match("machine\t+: ([^\n]+)") or
cpuinfo:match("Hardware\t+: ([^\n]+)") or
luci.util.pcdata(fs.readfile("/proc/diag/model")) or
nixio.uname().machine or
system
return system, model, memtotal, memcached, membuffers, memfree, bogomips, swaptotal, swapcached, swapfree
end
这段代码里,model这个变量的结果就是你看到“路由型号”,所以你只要修改这个变量,或是这个变量指向的文件(/tmp/sysinfo/model),页面上看到的产品型号就会变化
那“系统名称”呢,英文版里更清晰,其实是指的“Hostname”,也就是你的路由器在局域网内的名字。这个的值很明白,是Linux系统决定的,具体修改的文件是/etc/config/system,里面有hostname一项。LuCI开机时从nixio.so这个动态库里的函数调用显示了这个值。从hostname(newname)这个函数里能看出来Lua使用的hostname暂存在内存的/proc/sys/kernel/hostname这里
function hostname(newname)
if type(newname) == "string" and #newname > 0 then
fs.writefile( "/proc/sys/kernel/hostname", newname )
return newname
else
return nixio.uname().nodename
end
end
我在命令行里运行echo "lalala" > /proc/sys/kernel/hostname之后,又修改了设备名称文件(tmp/sysinfo/model),将TP-Link WDR4300 V1后面的型号去掉,看起来就是这样子
(我的是新版的LuCI,界面看起来不太一样但是代码一样的)
至于固件版本,这个变量的脚本存在/usr/lib/lua/luci/version.lua。具体内容你进去看一眼应该就对上号了
记得/proc/sys/kernel/hostname和/tmp/sysinfo/model都是临时文件(都在内存里,重启或者断电就消失了)
断电消失啊,有没有断电不消失的办法?
你可以直接指定变量名,这是死方法
在sys.lua里,直接把model这个变量赋值就好
model="The model you want"
这样他就会永远都是你指定的内容了
其他变量也一样
2023-08-29 广告
2017-04-07