当前位置: 首页 > 系统与网络 > 正文

[分享]解决Luci-statistics更改接口后出现错误

解决LUCI编译statistics组件后,在更改接口时候会出现如下错误
如图
luci-1

更改以上设置或者其他选项中的设置后,返回到graph,图表选项卡 会出现以下错误

/usr/lib/lua/luci/dispatcher.lua:448: Failed to execute call dispatcher target for entry ‘/admin/statistics/graph/load’.
The called action terminated with an exception:
/usr/lib/lua/luci/util.lua:209: attempt to get length of local ‘str’ (a nil value)
stack traceback:
[C]: in function ‘assert’
/usr/lib/lua/luci/dispatcher.lua:448: in function ‘dispatch’
/usr/lib/lua/luci/dispatcher.lua:195: in function

检查后发现由于是权限不足。statistics每次更改后会重新创建一份文件保存在/etc/config下面,但运行的是在非root用户权限下,所以由于权限不足导致问题发生。参见:https://dev.openwrt.org/ticket/10536
luci-2

解决方法:
打开/etc/init.d/luci_statistics文件,插入以下字段(粗体内容),插入chmod 0755 /etc/config/luci_statistics

#!/bin/sh /etc/rc.common
START=79

start() {
### replace shipped config with symlink
if [ ! -L /etc/collectd.conf ]; then
test -f /etc/collectd.conf && mv /etc/collectd.conf /etc/collectd.conf.bak
ln -s /var/etc/collectd.conf /etc/collectd.conf
fi

### create config
mkdir -p /var/etc
/usr/bin/stat-genconfig > /var/etc/collectd.conf

### prepare rrdimg directory
if [ -f /etc/config/lucid ] && [ -x /etc/init.d/lucid ] && /etc/init.d/lucid enabled && \
[ “$(uci get luci_statistics.rrdtool.image_path 2>/dev/null)” != “$(uci get lucid.statistics.physical 2>/dev/null)” ]; then
uci set lucid.statistics.physical=$(uci get luci_statistics.rrdtool.image_path)
uci commit lucid
/etc/init.d/lucid restart
fi

### workaround broken permissions on /tmp
chmod 1777 /tmp
chmod 0755 /etc/config/luci_statistics
}

restart() {
### regenerate config / prepare environment
start

### restart collectd
/etc/init.d/collectd restart
}

保存后问题即可解决。

本文固定链接: http://blog.ich8.com/post/4269 | 霸王硬上弓's Blog

avatar
该日志由 霸王硬上弓 于2014年01月09日发表在 系统与网络 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: [分享]解决Luci-statistics更改接口后出现错误 | 霸王硬上弓's Blog

[分享]解决Luci-statistics更改接口后出现错误:等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!