--- title: OpenWrt 19.07.2 状态页面增加 CPU 信息显示 date: 2020-08-07 12:29:15 tags: --- {% blockquote 引用文章 https://www.popyone.com/post/30.html OPENWRT_x86(19.07.3)界面添加cpu温度和使用率 %} {% endblockquote %} --- 安装软件包:`lm-sensors`、`lm-sensors-detect` 修改 `/usr/libexec/rpcd/luci` 文件,添加一个 `ubus` 的 `method`:
return { result = args.localtime }
end
},
getCPUInfo = {
call = function()
local sys = require "luci.sys"
local rv = {}
rv.cpufreq = sys.exec("grep 'MHz' /proc/cpuinfo | cut -c11- | sed -n '1p' | tr -d '\n'")
rv.cputemp = sys.exec("sensors | grep Core | awk '{print $1,$2,$3}' | tr '\n' ' '")
return rv
end
},
getTimezones = {
修改 `/usr/share/rpcd/acl.d/luci-base.json` ,给刚刚添加的 `getCPUInfo` 添加权限:
"ubus": {
"file": [ "list", "read", "stat" ],
"iwinfo": [ "assoclist", "freqlist", "txpowerlist", "countrylist" ],
"luci": [ "getConntrackList", "getInitList", "getLocaltime", "getProcessList", "getRealtimeStats", "getTimezones", "getLEDs", "getUSBDevices", "getSwconfigFeatures", "getSwconfigPortState", "getBlockDevices", "getMountPoints", "getCPUInfo" ],
"luci-rpc": [ "getBoardJSON", "getDHCPLeases", "getDSLStatus", "getDUIDHints", "getHostHints", "getNetworkDevices", "getWirelessDevices" ],
修改 `/www/luci-static/resources/view/status/include/10_system.js`
var callSystemInfo = rpc.declare({ object: 'system', method: 'info' }); var callCPUInfo = rpc.declare({ object: 'luci', method: 'getCPUInfo' }); return baseclass.extend({ title: _('System'), load: function() { return Promise.all([ L.resolveDefault(callSystemBoard(), {}), L.resolveDefault(callSystemInfo(), {}), L.resolveDefault(callCPUInfo(), {}), fs.lines('/usr/lib/lua/luci/version.lua') ]); }, render: function(data) { var boardinfo = data[0], systeminfo = data[1], cpuinfo = data[2], luciversion = data[3]; ... var fields = [ _('Hostname'), boardinfo.hostname, _('Model'), boardinfo.model, _('Architecture'), boardinfo.system, _('Firmware Version'), (L.isObject(boardinfo.release) ? boardinfo.release.description + ' / ' : '') + (luciversion || ''), _('Kernel Version'), boardinfo.kernel, _('Local Time'), datestr, _('Uptime'), systeminfo.uptime ? '%t'.format(systeminfo.uptime) : null, _('CPU Info'), cpuinfo.cpufreq + ' MHz / ' + cpuinfo.cputemp, _('Load Average'), Array.isArray(systeminfo.load) ? '%.2f, %.2f, %.2f'.format( systeminfo.load[0] / 65535.0, systeminfo.load[1] / 65535.0, systeminfo.load[2] / 65535.0 ) : null ];使用命令 `/etc/init.d/rpcd restart` 重启 `rpcd` 服务,最后清除浏览器页面缓存。 PS:可使用 `ubus call luci getCPUInfo` 检查执行是否有异常。