• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst]Script nach dem/beim Mounten ausführen

counter

Newbie
Hallo,

Nach langer Abwesenheit im Forum habe ich wieder mal eine Frage:

Ist es unter Suse Linux 9.1 möglich ein Script nach dem Mounten eines Datenträgers starten zu lassen?
Also mit Automount?
Wenn ja wie?

Habe mir testweise einen Server gebaut.
Wenn ich den USB-Stick einstecke soll automatisch ein paar Dateien darauf kopiert werden, vom Script geunmountet werden und ein BEEP ertönen. (damit ich weiß das der Computer fertig ist.

Folgendes Script funktioniert bei mir manuell:

#!/bin/bash
if [ "` mount | grep /dev/sda1 | cut -b 1-9 `" = "/dev/sda1" ];
then echo "USB-Stick ist gemountet";
else echo "USB-Stick ist nicht gemountet"; fi

Den Rest muss ich halt noch schreiben.

Wichtig ist mir das aufrufen des Scripts nach dem Mounten.
sonst müsste ich jede Minute den Test mit einem cronjob machen um zu wissen ob der Stick drin ist.

Server läuft ohne Monitor und Tastatur.
Soll alles automatisch gehen.

Danke für eure Hilfe!

Gruß
Counter
 
OP
counter

counter

Newbie
Danke TeXpert

Hab mir mal ein paar Scripte in /etc/hotplug angesehen.
Aber so wirklich blicke ich da nicht durch.
Hab da zuwenig erfahrung in solchen sachen.

Unter KDE wird dann der Konqueror aufgerufen mit dem richtigen Verzeichnis wenn ich den Stick einstecke.

Wie finde ich heraus wo das passiert?
Brauche das auf der Console.
In den Scripten wird fast nur mit Variablen gearbeitet und da blicke ich dann nicht mehr durch.
Habe zu wenig Erfahrung damit.
Oder muss ich die Variable Action (steht irgendwo ganz oben) auf:
./meinscript.sh setzen?

edit: hab mal nach den udev scripten gesucht.
Auch mit google.de (jetzt weis ich ja wonach ich suchen muss)
und das gefunden http://www.linuxforen.de/forums/showthread.php?t=178406

Da les ich mich mal durch
/edit


Gruß
Counter[/url]
 

TeXpert

Guru
was haben denn Deine Googleien zum Thema "hotplug udev script" ergeben? oder wie wäre es mit einem Blick in /usr/share/doc/hotplug und /usr/share/doc/udev?

da gibts Beispiele und Dokumentationen
 
OP
counter

counter

Newbie
Hi TeXpert

Hab das > udev script suse ausführen bei google eingegeben und dann kam das > http://www.google.de/search?hl=de&q=udev+script+suse+ausf%C3%BChren&btnG=Suche&meta=lr%3Dlang_de
raus.
Meintest du das?

Hab die Beispiele und die Dokumentationen gefunden.
Die Liegen bei mir unter /usr/share/doc/packages/udev und ../hotplug.

Wobei nur bei udev Beispiele dabei sind.
Bei Hotplug nur eine Readme.

Ich forste mal die udev Dateien durch und kuck mal wie weit ich mit meinem rest English komme.
Gruß
Counter
 

TeXpert

Guru
ich meinte wie ich geschrieben hatte: "hotplug udev script" ;)

liefert z.B. als 1. Link die hotplug-Homepage...

dann könnte das hier interessant werden: http://www.tummy.com/journals/entries/kevin_20041219_131044
 
OP
counter

counter

Newbie
So TeXpert,

Habe dann noch das http://www.linuxforen.de/forums/printthread.php?t=153630 gefunden.

Also ich habs jetzt so wie ich es wollte.
War einfacher als ich gedacht hatte.
Hier meine/unsere Lösung (mit Hilfe des/der obigen Links):

"befehl" = ohne Anführungszeichen eingeben.

Alles als root machen!

Als root anmelden.
Alle USB-Geräte abstecken.
Und etwas warten.
Jetzt den USB-Stick einstecken und etwas warten.

Dann mit "mount" feststellen ob ein /dev/sd? gemountet ist.

Die Zeile enthält dann etwas mit /media/usb-storage-...
Das ist der Mountpoint wo auf das Gerät zugegriffen wird.

"lsusb" eingeben und Enter drücken.

Die Ausgabe sieht dann z.b. so aus:

Bus 001 Device 022: ID 0ea0:2168 Ours Technology, Inc.
Bus 001 Device 001: ID 0000:0000

Das 0ea0:2168 brauchen wir dann.

Aufschreiben!

Sieht bei euch anders aus, aber diese zwei Werte brauchen wir.
Der erste Wert ist der idVendor und der zweite die idProduct.

Jetzt die Datei /etc/hotplug/usb.usermap mit einem Editor (joe, mcedit) öffnen.

Die sah bei mir dann so aus:
# usb module match_flags idVendor idProduct bcdDevice_lo bcdDevic
e_hi bDeviceClass bDeviceSubClass bDeviceProtocol bInterfaceClass bInterf
aceSubClass bInterfaceProtocol driver_info
# $Id: usb.usermap,v 1.1.1.1 2004/03/10 15:41:49 adrian Exp $

Und dann habe ich folgendes eingefügt, neue Zeile Anfangen!
Steht alles in einer Zeile

usbstick 0x0003 0x0ea0 0x2168 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00
0x00000000

usbstick = Name des Scriptes das aufgerufen werden soll wenn der USB-Stick eingesteckt wird.
0x0ea0 = die idProduct
0x2168 = die idVendor

Das 0x heißt "das ist ein Hexadezimalwert"

Bei mcedit
Script mit F2 Speichern und Editor mit F10 verlassen.

Jetzt kommt das Script das aufgerufen werden soll:

"cd /etc/hotplug/usb" ENTER
"mcedit usbstick"

Mein Script sieht so aus:

#!/bin/bash
#Pause von 30 Sekunden -> Wartezeit bis gemountet ist
sleep 30
# Pause vorbei -> Befehle ausführen
# Backup USB-Stick in eigenes Verzeichnis
cp /media/usb-storage-0123456789ABCDEF:0:0:0p1/*.* /home/Benutzer/USB-Stick;
# Ändern der Rechte auf bestimmten User. Warum? Script #äuft/arbeitet als root
chown Benutzer:users /home/Benutzer/USB-Stick/*.* -R;
#Ausführungsrechte entziehen -> Nur Backup
chmod -x /home/Benutzer/USB-Stick/*.* -R;
#Löschen des USB-Sticks
rm /media/usb-storage-0123456789ABCDEF:0:0:0p1/*.*;
# umounten mit Kleinem L an letzter Stelle
umount /media/usb-storage-0123456789ABCDEF:0:0:0p1 -l

beim mcedit mit F2 speichern und den Editor mit F10 verlassen.

mit "chmod +x usbstick" das Script als ausführbar kennzeichnen.

Fertig.

Den Usb-Stick rausziehen.
Auf einem Anderen Computer irgendwas draufkopieren und dann ausprobieren.

Gruß
Counter

Danke an TeXpert für die Tipps und Links!
 
Oben