halb-automatischer Mount von ntfs

cmichels

Neuer User
Mitglied seit
14 Sep 2007
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
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
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:
Kostenlos!

Statistik des Forums

Themen
248,917
Beiträge
2,305,037
Mitglieder
378,638
Neuestes Mitglied
Patrick89