我是这方面的新手。我已经在路由器上安装并配置了 dd-wrt。
dd-wrt 版本:DD-WRT v24-sp2 (08/07/10) 路由器版本:D-Link DIR 600
我正在尝试在其中设置带宽使用情况监控脚本。
有没有什么办法,我可以将详细信息存储在路由器中,而不会在重启时被删除?
我的意思是我可以获得某种持久存储吗?
谢谢
J
答案1
应该有nvram
(即非易失性内存)。
nvram show # list all variables
nvram get name # get variable
nvram set name=value # set variable
nvram unset name # delete variable
nvram commit # save changes to flash
答案2
正如 Mika 所说:nvram 是持久存储的名称。不幸的是,它是不是文件系统。DD-WRT 的文件系统(至少是小型文件系统)是 squashfs 和 ramfs 的组合,并在启动时根据 nvram 中存储的值进行填充。
当你去管理->命令,您可以输入脚本并将其保存为自定义脚本(页面底部)。您可以使用此功能实现多个用例,前提是它们都在这个脚本中。我做了类似的事情:
case "$1" in
wificontrol)
#here is code which turns off wlan after 30 mins of inactivity
;;
wifion|wifi)
wlanIF=ra0
ifconfig $wlanIF up
touch /tmp/wlan-online0
;;
*)
echo "$0 {wificontrol|wifi[on]}"
esac
然后,我在命令行上运行脚本:
/tmp/custom.sh wifion
并作为一个 cron 任务(行政管理->管理):
*/4 * * * * root /tmp/custom.sh wificontrol
我知道这不是一个很好的解决方案,但它确实有效。已在我的 v24-sp2 (rev 14896) 上测试
答案3
您可以使用一小块空间。我不太清楚,因为我没有查看路由器的规格。当您设置 cron 作业时,您正在写入文件系统,不是吗?我会通过 SSH 登录并检查 /var 目录。如果您有 USB 端口,您可以将日志文件放在那里。只要确保在脚本中一旦日志达到一定大小就删除它们,否则您的路由器就会死机。
你可能会感兴趣http://www.dd-wrt.com/wiki/index.php/Useful_Scripts 或此论坛主题。http://www.dd-wrt.com/phpBB2/viewtopic.php?t=81432
答案4
启用 JFFS。
链接中有两条说明:
- 使用 Web-GUI 界面
- 使用命令行界面
就我的情况来说,只有命令行界面有效。Web-GUI 界面无效。
我修改后的命令行界面说明
这些命令最容易通过 ssh 在 shell 中运行;必须启用 ssh。
首先,检查 jffs 是否已经安装:
mount
已挂载的 jffs 分区如下所示:
$ mount
...
/dev/mtdblock/4 on /jffs type jffs2 (rw)
$ df -h
Filesystem Size Used Available Use% Mounted on
...
/dev/mtdblock/4 4.3M 260.0K 4.0M 6% /jffs
如果不可用,则指示 DD-WRT 格式化并创建一个:
在运行这些之前,你应该备份你的 DD-WRT 配置
nvram set jffs_mounted=1
nvram set enable_jffs2=1
nvram set sys_enable_jffs2=1
nvram set clean_jffs2=1
nvram set sys_clean_jffs2=1
nvram commit
reboot
重启后,取消设置每次启动时重新格式化,以免文件丢失
nvram set clean_jffs2=0
nvram set sys_clean_jffs2=0
nvram commit
测试
date | tee /jffs/test
cat /jffs/test