Tach Gemeinde,
nach längerer Suche hier im Forum habe ich festgestellt, dass zwar einige automatisch Festplatten mounten können. Ebenso funktioniert auch ein manueller Mount von NTFS. Doch leider ist nirgends ein Thread, der beides kompakt beschreibt. Daher möchte ich hier meine (halb-) automatische Lösung dokumentieren. Da die Box vor abziehen des USB-Steckers nicht wissen kann, dass gleich was passiert und weil ich dem NTFS Treiber (im RW-Modus) nur 99% traue, ziehe ich einen halb-automatischen Unmount vor.
Mein Ziel: möglichst einfaches Un-/Mounten einer NTFS-Partition an FBF 7150.
Die Lösung: Integration eines CGI-Skripts in der FBF
Dafür habe ich folgende Dateien modifiziert:
/mod/etc/reg/extra.reg
Diese Zeile soll die /usr/mww/cgi-bin/extras.cgi so konfigurieren, dass ein Menüpunkt "USB-Platte ein-/ausschalten" im ds-mod unter "Extras" erscheint.
/usr/lib/usbplatte/usbplatte.cgi
Das CGI-Skript stellt zwei Links (zum ein- und ausschalten) dar. Die eigentliche Arbeit wird dann wie üblich im exec.cgi erledigt.
/usr/mww/cgi-bin/exec.cgi
Der Teil unter "usbein)" schaltet den NTFS Treiber ein, mounten die dort (s. Weboberfläche für NTFS-3G Paket) eingestellten Verzeichnisse und starten Samba. Entsprechend in umgekehrter Reihenfolge funktioniert der Teil "usbaus)".
Zu guter letzt müssen die Skripte noch an den entsprechenden Stellen verlinkt werden damit der Webserver auch die Seiten findet und darstellen kann.
Warum das Verzeichnis "/usr/lib/cgi-bin/usbplatte" zusätzlich zum CGI-Skript erzeugt werden muss ist mir noch nicht 100% klar. Das "extras.cgi" findet aber ohne Verzeichnis das Skript nicht. (Mein UNIX Skripting ist nicht mehr ganz taufrisch).
Das ganze funktioniert jetzt also per Klick unter Extras / USB-Platte ein-/ausschalten im Web-Konfig von ds-mod. Wer's noch einfacher haben will, macht sich zwei Lesezeichen mit http://fritz.box:81/cgi-bin/exec.cgi?cmd=usbein bzw. http://fritz.box:81/cgi-bin/exec.cgi?cmd=usbaus.
Der einzige Nachteil ist im Moment, dass der Link im geschützten Bereich liegt, d.h. nur per Passwort zu erreichen ist. Evtl. kann ich das noch beheben, sobald ich in der HTML Struktur der FBF mal den Durchblick hab.
So, das war doch recht einfach. Kommentare und Verbesserungen sind gerne Willkommen.
Christian
nach längerer Suche hier im Forum habe ich festgestellt, dass zwar einige automatisch Festplatten mounten können. Ebenso funktioniert auch ein manueller Mount von NTFS. Doch leider ist nirgends ein Thread, der beides kompakt beschreibt. Daher möchte ich hier meine (halb-) automatische Lösung dokumentieren. Da die Box vor abziehen des USB-Steckers nicht wissen kann, dass gleich was passiert und weil ich dem NTFS Treiber (im RW-Modus) nur 99% traue, ziehe ich einen halb-automatischen Unmount vor.
Mein Ziel: möglichst einfaches Un-/Mounten einer NTFS-Partition an FBF 7150.
Die Lösung: Integration eines CGI-Skripts in der FBF
Dafür habe ich folgende Dateien modifiziert:
/mod/etc/reg/extra.reg
Code:
USB-Platte|USB-Platte ein-/ausschalten|usbplatte
Diese Zeile soll die /usr/mww/cgi-bin/extras.cgi so konfigurieren, dass ein Menüpunkt "USB-Platte ein-/ausschalten" im ds-mod unter "Extras" erscheint.
/usr/lib/usbplatte/usbplatte.cgi
Code:
#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin
. /usr/lib/libmodcgi.sh
cgi_begin 'USB-Platte' 'usbplatte'
cat << EOF
<div class="btn">
<form class="btn" action="/cgi-bin/exec.cgi" method="post">
<input type="hidden" name="cmd" value="usbein">
<input type="submit" value="USB-Platte einschalten" style="width
</form>
</div>
<div class="btn">
<form class="btn" action="/cgi-bin/exec.cgi" method="post">
<input type="hidden" name="cmd" value="usbaus">
<input type="submit" value="USB-Platte ausschalten" style="width
</form>
</div>
EOF
cgi_end
Das CGI-Skript stellt zwei Links (zum ein- und ausschalten) dar. Die eigentliche Arbeit wird dann wie üblich im exec.cgi erledigt.
/usr/mww/cgi-bin/exec.cgi
Code:
usbein)
cgi_begin "Binde USB-Platte ein..."
echo "<p>Binde USB-Platte ein:</p>"
echo "<p>Starte NTFS-3G:</p>"
echo -n '<pre>'
status=$(/mod/etc/init.d/rc.ntfs status)
if [ "$status" = "stopped" ]; then
/mod/etc/init.d/rc.ntfs start
else
echo 'ntfs already started'
fi
echo '</pre>'
echo "<p>Starte Samba</p>"
echo -n '<pre>'
status=$(/mod/etc/init.d/rc.samba status)
if [ "$status" = "stopped" ]; then
/mod/etc/init.d/rc.samba start
else
echo 'samba already started'
fi
echo '</pre>'
echo '<form action="/cgi-bin/extras.cgi"><input type="submit" va
cgi_end
;;
usbaus)
cgi_begin "Entferne USB-Platte ..."
echo "<p>Entferne USB-Platte:</p>"
echo "<p>Stoppe Samba</p>"
echo -n '<pre>'
status=$(/mod/etc/init.d/rc.samba status)
if [ "$status" = "stopped" ]; then
echo 'samba already stopped'
else
/mod/etc/init.d/rc.samba stop
fi
echo '</pre>'
echo "<p>Stoppe NTFS-3G:</p>"
echo -n '<pre>'
status=$(/mod/etc/init.d/rc.ntfs status)
if [ "$status" = "stopped" ]; then
echo 'ntfs already stopped'
else
/mod/etc/init.d/rc.ntfs stop
fi
echo '</pre>'
echo '<form action="/cgi-bin/extras.cgi"><input type="submit" va
cgi_end
;;
Der Teil unter "usbein)" schaltet den NTFS Treiber ein, mounten die dort (s. Weboberfläche für NTFS-3G Paket) eingestellten Verzeichnisse und starten Samba. Entsprechend in umgekehrter Reihenfolge funktioniert der Teil "usbaus)".
Zu guter letzt müssen die Skripte noch an den entsprechenden Stellen verlinkt werden damit der Webserver auch die Seiten findet und darstellen kann.
Code:
mkdir /usr/lib/cgi-bin/usbplatte
cd /usr/lib/cgi-bin/usbplatte
ln -s ../../usbplatte/usbplatte.cgi /usr/lib/cgi-bin/usbplatte/usbplatte.cgi
Warum das Verzeichnis "/usr/lib/cgi-bin/usbplatte" zusätzlich zum CGI-Skript erzeugt werden muss ist mir noch nicht 100% klar. Das "extras.cgi" findet aber ohne Verzeichnis das Skript nicht. (Mein UNIX Skripting ist nicht mehr ganz taufrisch).
Das ganze funktioniert jetzt also per Klick unter Extras / USB-Platte ein-/ausschalten im Web-Konfig von ds-mod. Wer's noch einfacher haben will, macht sich zwei Lesezeichen mit http://fritz.box:81/cgi-bin/exec.cgi?cmd=usbein bzw. http://fritz.box:81/cgi-bin/exec.cgi?cmd=usbaus.
Der einzige Nachteil ist im Moment, dass der Link im geschützten Bereich liegt, d.h. nur per Passwort zu erreichen ist. Evtl. kann ich das noch beheben, sobald ich in der HTML Struktur der FBF mal den Durchblick hab.
So, das war doch recht einfach. Kommentare und Verbesserungen sind gerne Willkommen.
Christian
Zuletzt bearbeitet: