Existe um armazenamento persistente no roteador com dd-wrt

Existe um armazenamento persistente no roteador com dd-wrt

Eu sou novato nisso. Eu tenho o dd-wrt instalado e configurado no meu roteador.

Versão dd-wrt: DD-WRT v24-sp2 (08/07/10) Versão do roteador: D-Link DIR 600

Estou tentando configurar o script de monitoramento de uso de largura de banda nele.

Existe alguma maneira de armazenar detalhes no roteador, sem ser excluído na reinicialização?

Quero dizer, há algum tipo de armazenamento persistente que eu possa obter?

Obrigado
J.

Responder1

Deveria haver nvram(ou seja, memória RAM não volátil).

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

Responder2

Como disse Mika: nvram é o nome do armazenamento persistente. Infelizmente, énãoum sistema de arquivos. O sistema de arquivos do DD-WRT (pelo menos os pequenos) é uma combinação de squashfs e ramfs e é preenchido no momento da inicialização a partir de valores armazenados em nvram.

Quando você for paraAdministração->Comandos, você pode inserir um script e salvá-lo como umScript personalizado(Rodapé da página). Você pode usar esse recurso para implementar vários casos de uso, desde que todos estejam neste único script. Eu fiz algo assim:

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

Então, executo o script na linha de comando:

/tmp/custom.sh wifion

E como um cron job (Administração->Gerenciamento):

*/4 * * * * root /tmp/custom.sh wificontrol

Eu sei, esta não é uma solução muito boa, mas funciona. Testado em meu v24-sp2 (rev 14896)

Responder3

Há um pequeno espaço que você pode usar. Não sei exatamente porque não procurei as especificações do seu roteador. Quando você define um cron job, você está gravando no sistema de arquivos, não é? Eu faria o SSH e verificaria o diretório /var. Se você tiver uma porta USB, poderá colocar seus arquivos de log lá. Apenas certifique-se de excluir os logs em seu script quando eles atingirem um determinado tamanho ou seu roteador morrerá.

Isso pode lhe interessarhttp://www.dd-wrt.com/wiki/index.php/Useful_Scripts ou este tópico do fórum.http://www.dd-wrt.com/phpBB2/viewtopic.php?t=81432

Responder4

Habilitar JFFS.

Existem duas instruções no link:

  • usando interface Web-GUI
  • usando interface de linha de comando

No meu caso, apenas a interface da linha de comando funcionou. A interface Web-GUI não.


minhas instruções modificadas da interface de linha de comando

Esses comandos são mais fáceis de executar em um shell via ssh; ssh deve estar habilitado.

Primeiro, verifique se o jffs já está montado:

mount

Uma partição jffs montada se parece com:

$ 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

Se não estiver disponível, instrua o DD-WRT para formatar e criar um:

VOCÊ PROVAVELMENTE DEVE FAZER BACKUP DA SUA CONFIGURAÇÃO DD-WRT ANTES DE EXECUTAR ESTAS

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

Após a reinicialização, desative a reformatação por inicialização para que os arquivos não sejam perdidos

nvram set clean_jffs2=0
nvram set sys_clean_jffs2=0
nvram commit

Teste com

date | tee /jffs/test
cat /jffs/test

informação relacionada