Nachdem ich euch gestern gezeigt habe, wie man den Targa wr500 bzw. den Speedport W500v mittels der alternativen Firmware “Bitswitcher” zu einem Access Point für eine Fritzbox umfunktioniert, geht es heute um die Möglichkeiten des Konsolen-Zugriffs. Die Bitswitcher Firmware bietet für den Zugriff auf sein Linux Betriebssystem über Telnet und SSH. Neben dem vollwertigen Linux Kernel haben die Jungs noch einige Tools hinzugepackt, die man für eigene Zwecke verwenden kann. So befinden sich auch FTP-Tools sowie der Downloader wget im System. Das ist erstmal nicht weiter spektakulär, in Kombination mit meiner Vision der extrem Stromspar-Download-Station allerdings erscheinen sie in neuem Licht.
Kurz zu meiner Vision: Da meine DSL Leitung nun von 16000 auf 2500 geschrumpft ist, dauern größere Downloads entsprechend länger. Die Idee war nun, diese längere Wartezeit auf die Nacht bzw. auf den Arbeits-Tag zu verlegen, damit zu den Zeiten, wo wir zu Hause sind, die Leitung frei ist und wir ganz normal surfen können. Da dies bei einem normalen Rechner zwecks Stromkosten etwas kostspielig wird, war ein Thinclient oder eben ein modifizierter Router als Alternative angedacht. Da meine Fritzbox leider noch das Modell ohne USB-Anschluss ist und auch der Targa Router keine solche Schnittstelle bietet, war eine NAS-Platte zusätzlich nötig. Doch dazu später mehr.
Dieses Tutorial dürfte für alle Router funktionieren, für die es entweder alternative Firmware gibt oder die bereits von Haus aus über einen Konsolen-Zugang verfügen. Wichtig ist, dass ihr wget, curl oder Tools für den FTP-Zugriff habt, sonst siehts mit den Downloads leider schlecht aus. Falls ihr also eine modifizierte Fritzbox oder so verwendet, könnt ihr den ersten Teil mit der Einbindung der Samba-Freigabe überspringen.
Teil 1 – Die Samba Freigabe
Da, wie gesagt, keines meiner Geräte über USB verfügt und mir so der Speicherplatz für größere Downloads fehlt, muss eine NAS-Festplatte dafür herhalten. Ich verwende hierfür ein RaidSonic IB-NAS902 Icy Box NAS-System
.
Bitswitcher unterstützt von Haus aus erstmal kein Samba, weshalb wir diese Funktion per Plugin nachladen müssen. Auf der entsprechenden Seite findet ihr das CIFS-Plugin, mit dem der Zugriff ermöglicht wird.
Zuerst verbindet ihr euch per SSH/Telnet auf den Server und macht folgendes:
cd /opt
mkdir cifs
Damit habt ihr den Pluginordner im /opt-Verzeichnis angelegt, welches persistent ist. Somit sind die Dateien auch nach einem Neustart des Routers noch da.
Ladet nun das Plugin herunter und entpackt es, anschließend kopiert ihr folgende Dateien per scp von eurem Rechner (in meinem Fall ein Mac) auf den Router:
scp cifs.ko nls_base.ko nls/nls_iso8859-1.ko root@:/opt/cifs
Die Datei “nls_iso8859-1.ko” müsst ihr entsprechend eures Zeichensatzes aus dem Ordner “nls” wählen. Im Normalfall sollte es jedoch “nls_iso8859-1.ko” sein.
Um Samba verwenden zu können, müsst ihr das Plugin nun noch laden, und zwar GENAU in DIESER Reihenfolge:
insmod /opt/cifs/nls_base.ko
insmod /opt/cifs/nls_iso8859-1.ko
insmod /opt/cifs/cifs.ko
Nachdem das erledigt ist, kann “mount” nun auch auf Samba-Freigaben zugreifen. Um überhaupt eine Freigabe abrufen zu können, müssen wir diese erstmal anlegen. Für den ersten Test habe ich für den User “tester” den Ordner “PUBLIC” lesend und schreibend auf der Icy Box freigegeben. Nun bindet man die Freigabe folgendermaßen ein:
cd /opt
mkdir mnt
cd mnt
mkdir nas
mount -t cifs -o username=tester,domain=WORKGROUP //192.168.1.100/PUBLIC /opt/mnt/nas
Zuerst müsst ihr einen Ordner für den Mountpoint anlegen, anschließend wird das Laufwerk an dieser Stelle eingehangen. Falls die Freigabe mittels Benutzer und Passwort erfolgen soll, muss die Zeile so aussehen:
mount -t cifs -o username=tester,password=passwort,domain=WORKGROUP //192.168.1.100/PUBLIC /opt/mnt/nas
Leider konnte ich das noch nicht testen, kann also nicht für die Funktion garantieren.
Das war es schon. Nun solltet ihr unter /opt/mnt/nas eure Freigabe eingebunden haben. Um das Ganze testen zu können, gebt einfach folgendes ein:
touch /opt/mnt/nas/test.txt
Ruft anschließend mit eurem Rechner die Freigabe auf. Sollte alles geklappt haben, findet ihr nun die Datei “test.txt” vor.
Teil 2 – Der Downloader
Da das eigentlicher Ziel der automatisierte Download von Dateien sein soll, müssen wir nun noch ein Script einrichten, was diesen lästigen Part für uns übernimmt. Um es kurz zu machen, hier die zu erledigenden Schritte:
cd /opt
mkdir downloader
cd downloader
touch download.sh
vi download
[Taste "i" drücken]
folgenden Text einfügen:
#!/bin/bash
cat /opt/mnt/nas/download.txt | while read a; do
wget -P /opt/mnt/nas/download $a
done
[Taste "ESC" drücken]
:w
[Taste "Enter" drücken]
:q
[Taste "Enter" drücken]
chmod 755 download.sh
cd ..
cd mnt
cd nas
mkdir download
touch download.txt
Und hier die Erklärung: Im ersten Schritt legt ihr für das Download-Script einen eigenen Ordner an. Dann wird das Script erstellt und mittels vi mit Befehlen befüllt. Anschließend speichert ihr den Inhalt und verlasst vi wieder. Dann wird das Script ausführbar gemacht (chmod) und zuletzt noch der Zielordner für eure Downloads sowie die download-Liste angelegt (download.txt).
Das Script macht nun nichts anderes, als die Datei download.txt zeilenweise zu lesen und jeden einzelnen Eintrag per wget in den Ordner Download in eurer Freigabe zu laden. Wichtig: Die letzte Zeile muss eine Leerzeile sein, da sonst der letzte Eintrag der Liste ignoriert wird!)
Das Download-Script könnt ihr nun folgendermaßen starten:
/opt/downloader/download.sh
Um das Ganze nochmals zu automatisieren, packt folgende Zeilen in den Bereiech “custom script” im Adminbreich der Bitswitcher Web-Oberfläche:
insmod /opt/cifs/nls_base.ko
insmod /opt/cifs/nls_iso8859-1.ko
insmod /opt/cifs/cifs.ko
mount -t cifs -o username=tester,domain=WORKGROUP //192.168.1.100/PUBLIC /opt/mnt/nas
/opt/downloader/downlod.sh
speichern. fertig. Wenn ihr nun den Router neu startet, bindet er automatisch die Freigabe ein und startet anschließend das Download-Script.
Ich habe das script noch folgendermaßen verfeinert, damit es in einer Endlosschleife alle 50 Sekunden wieder die download.txt auf neue Einträge prüft:
#!/bin/bash
while true; do
cat /opt/mnt/nas/download.txt | while read a; do
wget -P /opt/mnt/nas/download $a
done
sleep 50
done
Wenn ihr das Script so umgebaut habt, reicht es, den Router anzuschalten. Um Downloads zu veranlassen, schreibt einfach die gewünschten Links (ZEILENWEISE!) in die download.txt innerhalb eurer Freigabe. Nach kurzer Zeit sollte der Download starten. Bitte beachten: Sobald das Script die Datei einmal gelesen hat, lädt es alles runter, bis es fertig ist. Nachträgliche Änderungen an der Download-Liste werden erst im nächsten Durchlauf der Endlosschleife beachtet!