====== Skripte und Dateien "permanent" auf die Box bringen ====== Die Fritzbox besitzt zwei Speicherbereiche: - den [[software:ds-mod:development:flash|Flash]] - den Arbeitsspeicher (RAM) Um im laufenden Betrieb Dateien anzulegen und zu verändern, lässt sich das Verzeichnis /temp nutzen. Es liegt im Arbeitsspeicher in einer RAM-Disk und arbeitet wie ein normales beschreibbares Dateisystem. Folgende Dinge sind jedoch zu beachten: * Es nutzt den vorhandenen Arbeitsspeicher mit, der je nach Box bis zu 32MB gross ist. Wird die Menge der Daten im Arbeitsspeicher zu gross, startet die Box ohne Vorwarnung neu. * Alles, was im Arbeitsspeicher liegt, ist nach einem Reboot oder Stromausfall verloren. ===== Die Möglichkeiten ===== Um auch nach einem Neustart alle nötigen Dateien verfügbar zu haben, gibt es fünf Möglichkeiten:\\ \\ ==== 1. ds-mod ==== Diese [[software:ds-mod:start|modifizierte Firmware]] erlaubt es, Dateien direkt in ein modifiziertes Firmware-Image zu schreiben, das dann auf die Fritzbox geflasht wird. Die Dateien befinden sich dann im nur lesbaren Dateisystem (mtd0) des Flash-Speichers.\\ \\ ** Pro:** * Einfaches Handling * keine bestehende Internetverbindung erforderlich \\ **Kontra:** * die modifizierte Firmware muss geflasht werden * der Flash-Speicher ist kleiner als das RAM und meist eh schon fast voll (Ausnahme: die Fritz!Boxen mit 8MB Flash, z.B. die FON WLAN 7170) \\ ==== 2. Erzeugen der Dateien aus der debug.cfg ==== Beim Booten werden die gewünschten Dateien im Verzeichnis /temp neu erstellt. Dazu wird das Script //debug.cfg// missbraucht, das beim Starten der Fritz!Box automatisch ausgeführt wird. Da die //debug.cfg// selbst im beschreibbaren TFFS des Flash (mtd3/4) liegt, gehen ihre Inhalte beim Reboot nicht verloren.\\ \\ Beispiel:\\ Der Code wird einfach in die //debug.cfg// eingefügt. Am einfachsten geht es mit Putty:\\ - mit der Box via telnet / SSH verbinden \\ - nvi /var/flash/debug.cfg\\ - an der passenden stelle "i" drücken - Code in Zwischenablage kopieren\\ - rechte Maustaste auf Putty fügt den Text ein (leider verschiebt sich das Einrücken, was aber der Funktion keinen Abbruch tut)\\ - nacheinander //ESC ESC : w q RETURN// drücken (Abbrechen wäre: //ESC ESC : q ! RETURN//)\\ - Neustarten\\ \\ Hier wird ein Skript erzeugt, das sich mit ///var/tmp/checkonline.sh// aufrufen lässt. Es zeigt an, welcher der neun Rechner im FB-LAN online ist. Wichtig ist, daß der "Endmarker" (hier 'ENDCHECK') **nicht eingerückt** ist. Die letzte Zeile macht das Script ausführbar. Abbruch mit STRG+C. cat > /var/tmp/checkonline.sh << 'ENDCHECK' #!/bin/sh while [ 1 = 1 ] do clear echo Online: date echo ------------------------------------------------ for a in "2 Desktop1" "3 Michael" "20 Christina" "21 -" "22 -" "23 -" "24 -" "25 -" "26 -" "27 -" "28 -" "29 -" "45 FB WLAN SL(WDS)" do ping -c 1 192.168.178.$a |grep "bytes from ">/dev/null && echo 192.168.178.$a & done sleep 1 echo ------------------------------------------------ sleep 9 done ENDCHECK chmod +x /var/tmp/checkonline.sh \\ ** Pro:** * funktioniert auf jeder Box * keine bestehende Internetverbindung erforderlich \\ **Kontra:** * funktioniert nur mit ASCII-Dateien, wie z.B. mit Skripten oder Konfigurationsdateien * werden Änderungen an diesen Dateien vorgenommen, müssen diese auch wieder in die debug.cfg übernommen werden\\ \\ ==== 3. Nachladen von Webserver ==== Beim Booten werden alle gewünschten Dateinen aus dem Internet oder von einem Webserver im Intranet auf die Box geladen.\\ \\ ** Pro:** * funktioniert mit allen Dateien, auch mit binären. Notwendig z.B. für nachgeladene Programme wie z.B. bFTP, dropbear(SSH) oder OpenVPN,... * funktioniert auf jeder Box * Umgeht die Probleme des knappen Flash-Speichers * Änderungen lassen sich leicht am Rechner mit dem eigenen Editor (z.B. TextPad) vornehmen (Achtung: Auf UNIX-Formatierung achten!) und dann auf den Webspace hochladen. * wer mehrere Fritz!Boxen oder Router hat, kann so auf einmal die Konfiguration für alle gleichzeitig anpassen \\ **Kontra:** * bestehende Internetverbindung oder laufender interner Webserver erforderlich * private Dateien wie z.B. "secret keys" für SSH oder VPN dürfen keinesfalls im Web abgelegt werden! Wer dies tut, kann sich Verschlüsselung gleich sparen. \\ \\ ==== 4. Nachladen vom USB Stick ==== Beim Booten werden alle gewünschten Dateinen direkt vom USB Stick bzw. via FTP vom internen FTP Server auf die Box geladen.\\ \\ ** Pro:** * funktioniert mit allen Dateien, auch mit binären. Notwendig z.B. für nachgeladene Programme wie z.B. bFTP, dropbear(SSH) oder OpenVPN,... * Umgeht die Probleme des knappen Flash-Speichers * Änderungen lassen sich leicht am Rechner mit dem eigenen Editor (z.B. Notepadplus) vornehmen \\ **Kontra:** * funktioniert nur bei vorhendenem USB Slot mit einem USB Stick (bzw. anderem USB Speichermedium) * Die USB devices werden, je nach Firmware, leider unter verschiedenen Namen eingebunden, sodaß in der debug.cfg darau eingegangen werden muß. \\ \\ ==== 5. WebDAV-Share mounten ==== Für den [[software:ds-mod]] gibt es das Paket [[software:ds-mod:pakete:webdav]], über das man einen WebDAV-Share direkt mounten kann. Als Konsequenz werden alle Remote-Dateien so behandelt, als wären sie lokal vorhanden, und zwar ohne gesondertes Nachladen.\\ \\ ** Pro:** * RAM wird nicht mit lokalen Kopien von Dateien gefüllt (abgesehen von der Ausführung) * funktioniert mit allen Dateien, auch mit binären * funktioniert auf jeder Box * umgeht die Probleme des knappen Flash-Speichers * sehr komfortabel, da kein Nachladen per debug.cfg nötig ist * Änderungen lassen sich leicht am Rechner mit dem eigenen Editor (z.B. TextPad) vornehmen (Achtung: Auf UNIX-Formatierung achten!) und dann auf den WebDAV-Share hochladen. * wer mehrere Fritz!Boxen oder Router hat, kann so auf einmal die Konfiguration für alle gleichzeitig anpassen \\ **Kontra:** * bestehende Internetverbindung und WebDAV-Server (z.B. GMX/1&1 MediaCenter) erforderlich * private Dateien wie z.B. "secret keys" für SSH oder VPN dürfen keinesfalls im Web abgelegt werden! Wer dies tut, kann sich Verschlüsselung gleich sparen. \\ \\ ===== Die perfekte Lösung ... ===== gibt es natürlich nicht. \\ Je nach Anwendungsfall werden die Möglichkeiten kombiniert.