# Autom. Script ausführen wenn USB Gerät angeschlossen wird

## Dimitri

Hi,

ist es möglich ein Script auszuführen wenn ich ein USB Gerät einstecke. (Möchte meine Kamera automatisch mounten)

Dim

----------

## zbled

da gibt es doch im kernel die option "hot plugable devices". hat nicht das damit zu tun? wenn du kernel automount oder so ähnlich aktiviert hast, müßte linux, sobald es erkennt, daß das und das modul für das gerät benötigt werden, automatisch laden.

----------

## Dimitri

Hi,

es geht nicht darum das Gerät zu erkennen. Das geht schon alles. Ich möchte es nur sobald es eingesteckt wird einen Mount Befehl ausführen. Automount ist bei mir mit einkompiliert. Muss ich mal sehen wie der funktioniert.

Dim

----------

## cyc

schreib mal ob du was erreichen konntest, ich hab das gleiche vor (mit ner digicam)

----------

## Konfuzius

 *zbled wrote:*   

> da gibt es doch im kernel die option "hot plugable devices". hat nicht das damit zu tun? wenn du kernel automount oder so ähnlich aktiviert hast, müßte linux, sobald es erkennt, daß das und das modul für das gerät benötigt werden, automatisch laden.

 

hot plug bedeutet ja nur, dass du das Gerät im laufenden Betrieb anschliessen oder auch wieder abziehen kannst, ohne dass der Kernel ne Grätsche macht, bzw. er das Gerät auch findet..

Ohne hot plug muss das Gerät sonst bereits beim booten des Systems angeschlossen gewesen sein, damit das Ding gefunden und betrieben werden kann..

----------

## Beforegod

Du könntest (auch wenns nur ein workaround ist) das ganze mittels den Kernel Messages und Cron machen.

Lass alle 30 Sekunden ein Skript laufen das nach dem Anschluss der Kamera sucht!

dmesg | grep usb (oder Kamerabezeichnung)

und dann auswerten..

(wenn usb geladen => mount /dev/sda1 /mnt/digi)

kann dir aber leider auch nicht das skript schreiben, da ich keine Ahnung von Bash Programmierung habe  :Wink: 

----------

## KiLLaCaT

also ich bin zwar kein profi, aber einen ansatz kann ich liefern:

```

#!/bin/bash

#Programm autostart.sh

if [ -e "/dev/usb/<camera_oder_so>"]; then

  mount /dev/usb/<camera_oder_so> /mnt/camera

else

   wait 30

   autostart.sh

fi

```

das problem is, dass er wissen muss, ob die camera angestöpselt is. man könnte ja die standard-ausgabe in eine datei umleiten, wenn er dann meldet, dass was eingesteckt wurde schreibt er das in die datei. wenn man dann ein if commando laufen lasst, das schaut ob die meldung über eine usb device steht, und dann mit dem obigen scrpt weitermacht, währe das prob gelöst  :Cool: 

----------

## KiLLaCaT

achja: unter

http://www.tuxhausen.de/kurs_bash_prog.html

findest du (fast alles was du dazu brauchst)

MfG

jax

----------

## sesc

Hi,

man könnte auch folgendes machen, was wesentlich eleganter wäre (wenn es funktioniert  :Smile: ):

es handelt sich ja um ein usb-storage-device, also wird vom kernel automatisch das entsprechende modul geladen. der kernel guckt hierfür in die modules.conf und diese bietet die option "post-install" an.

der eintrag "post-install usb-storage mount verzeichnis" müsste also das tun, was du willst!

Ciao

Sebastian

----------

## Dimitri

Hi,

das ganze geht ganz einfach wenn man weiss wie *gg*.

Unter /proc/sys/kernel gibt es eine Datei hotplug. darin steht der Name des Scripts das aufgerufen wird, wenn ein USB Gerät eingesteckt wird.

Standardmässig ist das /sbin/hotplug. Diese Datei gibts unter Gentoo anscheinend nicht. Deshalb einfach eine erstellen:

#!/bin/sh

mount /mnt/camera

Und fertig. Nicht vergessen die Datei ausführbar zu machen. 

Der nächste Schritt ist dann, automatisch auf dem Desktop ein Icon erscheinen zu lassen, mit dem man den entsprechenden Ordner öffnen kann. (So wie's in der neuen Mandrake 9 Beta gemacht ist) Wenn ich das hingebracht hab, schreib ich's wieder rein.

Dim

----------

## sesc

 *Dimitri wrote:*   

> Hi,
> 
> das ganze geht ganz einfach wenn man weiss wie *gg*.
> 
> Unter /proc/sys/kernel gibt es eine Datei hotplug. darin steht der Name des Scripts das aufgerufen wird, wenn ein USB Gerät eingesteckt wird.
> ...

 

hi,

doch doch, die Datei gibts, zumindest wenn das System "anständig" installiert ist  :Smile: 

Nach emerge sys-apps/hotplug hast du sie auch!

Ciao

  Sebastian

Anmerkung: Ich habe aber folgendes in der readme des hotplug-pakets gefunden:

 *Quote:*   

> 
> 
>     - Drivers may provide a per-device setup script that's invoked after
> 
>       they modprobe:  /etc/hotplug/usb/MODULENAME is called.
> ...

 

----------

## rs

 *KiLLaCaT wrote:*   

> also ich bin zwar kein profi, aber einen ansatz kann ich liefern:
> 
> ```
> 
> #!/bin/bash
> ...

 

Naja, das Skript startet sich alle 30 Sekunden selbst neu, was früher oder später den Speicher vollfüllt und das ist gar nicht gut. Eine herkömmliche Endlosschleife hätte es auch getan.

----------

## SNo0py

Und, hat schon jemand eine elegante Lösung gefunden? Die mit dem Cron-Script halte ich nicht für sinnvoll, da Polling nur CPU-Zeit in Anspruch nimmt. Wozu gibts die hotplug-Scripts?

lg

Mike

----------

## Henning

Ähm, ?

welche elegante Lösung meinst du denn? Ich bin mir einfach gemäß den Angaben in diesem Thread vorgegangen.

Also zuerst 'emerge hotplug', dann unter /etc/hotplug/usb das Script mit dem mount Befehl bereitstellen. Bei mir war das z.B. usb-storage um einen USB-Stick bzw. Card-Reader einzubinden.

Das war's.

Wenn man verschiedene Devices nutzen will, muß man den mount natürlich etwas intelligenter gestalten.

Einziges Problem ist das unplug. Hier muß natürlich zuerst ein umount gemacht werden, und dann das Gerät entfernt werden. Ist halt wie bei ner floppy.

Wo ist also daß Problem?

Henning

----------

## SNo0py

Na ja, ich möchte meine Digicam "deppensicher" an den Server hängen, d.h. wenn sie an den USB-Port gehängt und aktiviert wird, dann soll sie automatisch mounten und die Bilder sollen via Samba freigegeben werden. Um das ganze möglichst einfach benutzbar zu machen muss natürlich auch ein automatisches unmount funktionieren, damit der nächste wieder anstecken kann.

Im Sinne der Einfachheit sollte natürlich nicht "per Hand/SSH" ungemounten werden...

lg

----------

## Henning

Hallo,

also das mit mount geht ja problemlos. Beim umount muß sicher Forschungsarbeit geleistet werden.

Es kann ja schließlich nicht verhindert werden, jemand das USB Device zieht, bevor der umount gelaufen ist.

In der Praxis hat das trennen bei mir funktioniert. Ich möchte meine Hand allerdings nicht dafür ins Feuer legen, daß das Dateisystem nicht beschädigt wird, wenn beim unplug gerade auf das device geschrieben wird.

Da das mounten ja über ein script geschieht, könnte man vorher vielleich sicherheitshalber ein umount absetzen.

Hat schon mal jemand getestet, ob das script auch beim unplug aufgerufen wird?  

Ach ja, zum Thema automatisch ein Icon auf dem Desktop erscheinen lassen.

Das geht relativ einfach (KDE). Man erstellt das gewünschte Icon zunächst von Hand und verschiebt es aus /home/userid/Desktop an einen 'sicheren' Ort.

Das Hotplug-Script kopiert es dann einfach wieder zurück.

----------

