Gibt es einen persistenten Speicher im Router mit DD-WRT?

Gibt es einen persistenten Speicher im Router mit DD-WRT?

Ich bin ein Neuling auf diesem Gebiet. Ich habe dd-wrt auf meinem Router installiert und konfiguriert.

dd-wrt-Version: DD-WRT v24-sp2 (08/07/10) Router-Version: D-Link DIR 600

Ich versuche, darin ein Skript zur Überwachung der Bandbreitennutzung einzurichten.

Gibt es eine Möglichkeit, Details im Router zu speichern, ohne dass sie beim Neustart gelöscht werden?

Ich meine, gibt es eine Art dauerhaften Speicher, den ich bekommen kann?

Danke
J

Antwort1

Das sollte der Fall sein nvram(d. h. nichtflüchtiger RAM).

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

Antwort2

Wie Mika sagte: nvram ist der Name des persistenten Speichers. Leider ist esnichtein Dateisystem. Das Dateisystem von DD-WRT (zumindest die kleinen) ist eine Kombination aus Squashfs und Ramfs und wird beim Booten aus im NVRAM gespeicherten Werten gefüllt.

Wenn Sie zuVerwaltung->Befehlekönnen Sie ein Skript eingeben und es alsBenutzerdefiniertes Skript(unten auf der Seite). Sie können diese Funktion verwenden, um mehrere Anwendungsfälle zu implementieren, vorausgesetzt, sie sind alle in diesem einzelnen Skript enthalten. Ich habe so etwas gemacht:

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

Dann führe ich das Skript in der Befehlszeile aus:

/tmp/custom.sh wifion

Und als Cron-Job (Verwaltung->Management):

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

Ich weiß, das ist keine sehr schöne Lösung, aber es funktioniert. Getestet auf meinem v24-sp2 (rev 14896)

Antwort3

Es gibt einen kleinen Bereich, den Sie verwenden können. Ich weiß es nicht genau, weil ich die Spezifikationen Ihres Routers nicht nachgeschlagen habe. Wenn Sie einen Cron-Job einrichten, schreiben Sie in das Dateisystem, oder nicht? Ich würde mich per SSH anmelden und das Verzeichnis /var überprüfen. Wenn Sie einen USB-Anschluss haben, können Sie Ihre Protokolldateien dort ablegen. Achten Sie in Ihrem Skript nur darauf, die Protokolle zu löschen, sobald sie eine bestimmte Größe erreichen, sonst stirbt Ihr Router.

Das könnte Sie interessierenhttp://www.dd-wrt.com/wiki/index.php/Useful_Scripts oder dieser Forenthread.http://www.dd-wrt.com/phpBB2/viewtopic.php?t=81432

Antwort4

JFFS aktivieren.

Unter dem Link finden sich zwei Anleitungen:

  • über die Web-GUI-Schnittstelle
  • mithilfe der Befehlszeilenschnittstelle

In meinem Fall funktionierte nur die Befehlszeilenschnittstelle. Die Web-GUI-Schnittstelle nicht.


meine modifizierten Befehlszeilenschnittstellenanweisungen

Diese Befehle lassen sich am einfachsten in einer Shell über SSH ausführen; SSH muss aktiviert sein.

Überprüfen Sie zunächst, ob jffs bereits gemountet ist:

mount

Eine gemountete JFFS-Partition sieht folgendermaßen aus:

$ 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

Wenn nicht verfügbar, weisen Sie DD-WRT an, eines zu formatieren und zu erstellen:

Sie sollten wahrscheinlich Ihre DD-WRT-Konfiguration sichern, bevor Sie diese ausführen

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

Nach dem Neustart die Neuformatierung pro Start aufheben, damit keine Dateien verloren gehen

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

Testen mit

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

verwandte Informationen