
Я новичок в этом деле. У меня есть 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