路由器里有 dd-wrt ​​持久存储吗

路由器里有 dd-wrt ​​持久存储吗

我是这方面的新手。我已经在路由器上安装并配置了 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

相关内容