Есть ли постоянное хранилище в роутере с dd-wrt?

Есть ли постоянное хранилище в роутере с dd-wrt?

Я новичок в этом деле. У меня есть dd-wrt, установленный и настроенный на моем роутере.

версия dd-wrt: DD-WRT v24-sp2 (08/07/10) версия роутера: D-Link DIR 600

Я пытаюсь настроить в нем скрипт мониторинга использования полосы пропускания.

Есть ли способ сохранить данные в маршрутизаторе, не удаляя их при перезагрузке?

Я имею в виду, есть ли какое-то постоянное хранилище, которое я могу получить?

Спасибо
, Дж.

решение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

Как сказал Мика: 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/Полезные_скрипты или эта тема форума.http://www.dd-wrt.com/phpBB2/viewtopic.php?t=81432

решение4

Включить JFFS.

По ссылке есть две инструкции:

  • с использованием веб-интерфейса GUI
  • использование интерфейса командной строки

В моем случае работал только интерфейс командной строки. Интерфейс Web-GUI не работал.


мои измененные инструкции по интерфейсу командной строки

Эти команды проще всего запускать в оболочке через ssh; 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

Связанный контент