Skript zum automatischen Ein- und Aushängen

Letztes Wochenende habe ich mir Gentoo installiert. Als Fenstermanager nutze ich darauf Fluxbox und der Dateimanager ist xfe, ein ziemlich flotter Dateimanager im Windows95-Retro-Style. Er kombiniert die Zwei-Spalten-Ansicht eines muCommanders und die Baum-Ansicht vom Windows-Explorer. Mir gefällt diese Kombi und natürlich die Geschwindigkeit mit der das Leichtgewicht arbeitet.

Aber nun zum eigentlichen Thema. 🙂 Mit folgendem Skript werden eingesteckte Sticks gemountet und ein Symlink in $LINKLOCATION erzeugt. Alle entfernten Sticks werden nachträglich ausgehangen und der entsprechende Symlink entfernt. WARNUNG: Das entfernen von USB-Sticks kann zu Datenverlusten führen, daher empfiehlt es sich, den Stick Ordnungsgemäß mit umount oder über einen Dateimanger auszuhängen. Ich bin ein fauler Mensch und ziehe die Sticks auch schon einmal so raus, wenn ich meine, dass alle Schreibvorgänge abgeschlossen sind. Bei wichtigen Daten sollte man das nicht riskieren. Das Skript funktioniert in beiden Fällen.

#!/bin/sh
# Das Skript hängt USB-Laufwerke ein und aus.
LINKLOCATION=/home/stap/USB-Devices

for i in {b..e};
do
# aushängen was noch nicht ausgehangen wurde
if [ ! -e /dev/sd${i}1 ] 
then
	grep sd${i}1 /etc/mtab > /dev/null 2>&1
	if [ $? = 0 ] 
	then
		umount /dev/sd${i}1 
	fi
	if [ -e $LINKLOCATION/usb-${i} ]
	then
		rm $LINKLOCATION/usb-${i}
	fi			
# einhängen was einzuhängen ist
elif [ ! -e $LINKLOCATION/usb-${i} ]
then
	mount /dev/sd${i}1
	ln -s /media/sd${i}1 $LINKLOCATION/usb-${i}
fi
done

Wie man dem Skript entnehmen kann, werden meine USB-Devices /dev/sdb, /dev/sdc usw. genannt. Ob das bei anderen Rechnern auch so ist findet man heraus, indem man folgendes in ein Terminal eingibt und schaut, was passiert, wenn man den Stick einsteckt oder wieder herauszieht.

tail -n 10 -f /var/log/messages

Das selbe geht auch via udev, mit folgendem Befehl:

udevadm monitor

Oder man schaut sich einfach über einen Dateimanger den Ordner /dev an und beobachtet, was dort auftaucht und verschwindet, wenn man die Geräte einsteckt oder entfernt. Hat man herausgefunden, wie die Bezeichnungen lautet editiet man seine /etc/fstab entsprechend. Hier mal ein Auszug aus meiner fstab. Das sind die Einträge für meine drei USB-Anschlüsse plus ein Kartenleser.

/dev/sdb1		/media/sdb1	auto		noauto,users,uid=1000,gid=1000,sync	0 0
/dev/sdc1		/media/sdc1	auto		noauto,users,uid=1000,gid=1000,sync	0 0
/dev/sdd1		/media/sdd1	auto		noauto,users,uid=1000,gid=1000,sync	0 0
/dev/sde1		/media/sde1	auto		noauto,users,uid=1000,gid=1000,sync	0 0

Wie man sieht werden die Laufwerke im Ordner /media eingehängt. Die Ordner /media/sdb1 usw. müssen vorher erst erzeugt werden, um dort etwas einhängen zu können. Man könnte auch Einhängepnukte direkt im home-Verzeichnis anlegen. /media habe ich zur eigenen Sicherheit gewählt, weil ich da nicht soviel herumfummel, wie in meinem „home“. Außerdem sind Symlinks viel flexibler. Anstatt bei jeder Änderung /etc/fstab zu bearbeiten, braucht man so bloß die Variable LINKLOCATION ändern, um die Laufwerke woanders einzubinden.

Jetzt braucht es nur noch einer udev-Regel, die das Skript beim Einstecken und Entfernen automatisch aufruft.

SUBSYSTEMS=="usb",KERNEL=="sd[b..e]*",RUN+="/usr/local/bin/autousb"

Die Regeln werden im Ordner /etc/udev/rules.d/ hinterlegt.
Wie man sieht, befindet sich das Skript "autousb" im Verzeichnis /usr/local/bin, welches Bestandteil der Variable PATH sein sollte und damit auch ohne Pfad-Angabe ausführbar sein sollte. Von nun an, "erscheinen" und "verschwinden" meine USB-Sticks im Ordner /home/stap/USB-Devices. Hat man ein Programm, dass Symbole auf den Desktop zeichnet, kann man seine USB-Sticks auch dorthin zaubern. 🙂

~ von tofuzius - August 12, 2012.

2 Antworten to “Skript zum automatischen Ein- und Aushängen”

  1. Komisch, wenn ich das lese, krieg ich Lust mich AUFzuhängen ^^

    wieso kennt Deine Seite automatisch meinen Namen? Häh hab doch keine feste IP ? Das macht mir angst 🙂

  2. Ich schreibs ja schon auf, damit ich sonst keinen damit quäle. 😉 Hat halt jeder seine Hobbys.
    Das mit dem Namen sollte sich ändern, wenn Du mal Deine Cookies löschst. Am besten automatisch nach jeder Sitzung löschen lassen, dann kennt Dich auch nicht jede Seite beim Namen. 🙂
    cu

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

 
%d Bloggern gefällt das: