Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 18

Thema: Wenn USB Stick erkannt, automatisch ein Sktipt starten

  1. #1
    Registrierter Benutzer
    Registriert seit
    Aug 2005
    Beiträge
    13

    Wenn USB Stick erkannt, automatisch ein Sktipt starten

    Hallo Leute,
    Ich hab mir ein kleines Programmierprojekt überlegt,
    und dazu würde ich gerne ein Skript oder externes Programm
    starten sobald ein USB Stick eingesteckt und gemounted wird.
    Irgendwo muss ja hinterlegt sein das der Stick automatisch
    gemeounted wird wenn er erkannt wird. Ich dachte mir das ich dahinter
    einfach meinen Skriptaufruf setze.
    Gibt es da Konfigurationsfiles für den USB Deamon ?
    Ich hab leider noch nicht wirklich viel mit Linux gemacht,
    hat ir vielleicht jemand Tips für mein Problem, bzw. Links
    mit entsprechender Literatur damit man als Neuling einen Überblick
    über die ganze Struktur bekommt ?
    Gruß
    Till

  2. #2
    Sith Lord
    Registriert seit
    Apr 2009
    Beiträge
    1.438
    Automaitsches Mounten wird meist über HAL bzw. hald , manchmal in Kombination mit der Desktop-Environment gemacht.
    Es kann aber auch über udev bzw. udevd realisiert sein.

    Bitte sei vorsichtig damit, denn ein Angriefer, der Zugang zu einem USB-Port hat, kann so evtl. Malware einschleusen, so wie es z.B. mit den "autorun.inf"-Dateien auf Windows gern gemacht wird. Das Script, das ausgeführt wird sollte daher möglichst nicht auf dem USB-Stick selbst liegen und möglichst keine Informationen, die vom USB-Stick kommen, verarbeiten.

  3. #3
    Registrierter Benutzer
    Registriert seit
    Aug 2005
    Beiträge
    13
    Hi,
    das Script soll auf dem Rechner sein, und der Rechner
    soll dann bestimmte Programme / Skripte starten
    sobald ein USB Stick angeschlossen ist, bzw. abgezogen wird.
    Gruß
    Till

  4. #4
    Sith Lord
    Registriert seit
    Apr 2009
    Beiträge
    1.438
    Also ich persönlich würd's mit udev machen, das kann aber kompliziert werden.
    udev reagiert auf Änderungen der Hardware und erzeugt z.B. Device-Nodes und Symlinks in /dev . Das kann man gut für sowas missbrauchen.

  5. #5
    Registrierter Benutzer Avatar von buzz768
    Registriert seit
    Apr 2005
    Ort
    Rostock
    Beiträge
    2.016
    Mit halevt lässt sich auch so einiges anstellen. Insbesondere wenn die Programme/Skripte nicht mit Root-Rechten ausgeführt werden sollen, würde ich das vorziehen.
    Arch Linux / Intel Z77 / i5-3570K / 8GB PC3-1333 / SAMSUNG SSD 830 128GB

  6. #6
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    Feb 2004
    Beiträge
    1.535
    Zitat Zitat von oziris Beitrag anzeigen
    Also ich persönlich würd's mit udev machen, das kann aber kompliziert werden.
    udev reagiert auf Änderungen der Hardware und erzeugt z.B. Device-Nodes und Symlinks in /dev . Das kann man gut für sowas missbrauchen.
    Das kannst du vergessen weil UDEV nicht die DEVICES Scant.
    Es werden lediglich die Hardware Node Infos eingelesen, trigger Scripte warten nicht auf einen Mount Befehl, sie werden nur angestossen - so etwas ist auch nicht die sache von udev .
    Man kann sowas aber mit hal und dbus machen.
    Edit: hal kann z.B. mit autorun's umgehen.
    https://wiki.ubuntu.com/autorun
    Geändert von undefined (14.02.10 um 17:50 Uhr)
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    Speichenrechner - .htpasswd - qx11grab - MX-1000 Treiber - QTidy

  7. #7
    Registrierter Benutzer
    Registriert seit
    Jul 2001
    Ort
    München
    Beiträge
    1.749
    Also mit udev geht da schon einiges:


    Beispiel einer udev-Regel, die ich selbst im Einsatz habe:
    # USB Festplatte für Backups
    BUS=="usb", SYSFS{serial}=="XXXXXXXXXXX", KERNEL=="sd*", NAME="%k", SYMLINK+="backup%n"
    ACTION=="add", SYSFS{serial}=="XXXXXXXXXXX", KERNEL=="sd*", RUN="/bin/backup.sh"
    ACTION=="remove", KERNEL=="sd*", RUN+="/bin/backup_remove.sh"


    In /bin/backup.sh wird geprüft ob die Device Node /dev/backup vorhanden ist, falls ja, wird entsprechend ein Verzeichnis /mnt/backup erzeugt und dort hin gemountet, Das Skript (bei mir unison) wird ausgeführt.
    Am Ende wird ein umount durchgeführt und eine X-Meldung: Backup erfolgreich.

    Falls die USB Platte gezogen wird, wird aufgeräumt und mit umount -l das Verzeichnis aus dem System entkoppelt und entfernt.



    Funktioniert 1A, man muss aber viel testen, bis es funktioniert.
    Nexus-Psile Silent PC mit Commel LV-677 DC Board. Intel Core 2 Duo T7200, 2 GB Ram, MSI Geforce 8500 GT passiv, intel-hda Digital 5.1, 700 GB Western Digital Green line

  8. #8
    Registrierter Benutzer
    Registriert seit
    Aug 2005
    Beiträge
    13
    Danke für eure Hilfe, das sollte mir
    weiterhelfen

  9. #9
    Registrierter Benutzer
    Registriert seit
    Mar 2008
    Beiträge
    116
    Ich mach's anders:
    Zuerst ein
    Code:
    tail -f /var/log/messages|awk -f *irgendwas.awk* &
    Was passiert hier?

    Sobald ein neuer Eintrag in der /var/log/messages erscheint, dursucht das AWK Script diese neue Zeile(n).
    Wenn AWK "sieht" daß der USB Stick angemeldet wird, definierst Du im AWK Script den Systembefehl, der Dir genehm ist.

    Diese Methode lässt sich nämlich auf alle möglichen Ereignisse anwenden, solang eine beliebige (LOG) Datei betroffen ist.

    Deswegen nenne ich dieses AWK Script bei mir auch (viel allgemeiner) "listener.awk" da dieses Script alle möglichen Ereignisse scannen kann und ggf Aktionen anwerfen kann, je nachdem, wie ich es programmiere.

    Dazu ist es sehr ressourcenschonend, da ein
    Code:
    tail -f *beliebige_Datei*
    nicht wirklich viele Ressourcen frisst.

  10. #10
    Rain_maker
    Gast
    Das ist hinterm Rücken durch die Brust ins Auge.

    Wieso warten, bis der Kernel eine Meldung ausgespuckt hat, deren Ursache ihm so oder so von udev mitgeteilt wurde und dazu auch noch zusätzlich ständig ein Script laufen lassen?

  11. #11
    Sith Lord
    Registriert seit
    Apr 2009
    Beiträge
    1.438
    Ds mit dem "Pollen" mache ich auch nicht so gerne. Das mache ich nur bei RSS-Feeds und zur Ausgabe von Warnmeldungen, die sich aus Log-Einträgen ergeben.
    Ansonsten finde ich es viel schöner, wenn man sozusagen Event-Orientiert arbeitet; also möglichst wenig ständig wiederholtes überprüfen, so wie es "tail -f ..." macht.

    ... aber letzten Endes bleibt es Geschmackssache.

    PS: Lösungen die "pollen" sind gerade nicht "ressourcenschonend". Sie können sogar verhindern, dass die Platte in den Standby geht, haben immer einen weiteren Prozess am laufen, usw..

  12. #12
    Registrierter Benutzer
    Registriert seit
    Mar 2008
    Beiträge
    116
    @Oziris: Es ist kein "polling", da gerade nicht ständig irgendetwas abgefragt wird, sondern an ein Event lediglich ein weiterer Befehl angehängt wird.

    Pollen tue ich, wenn ich einen minütlichen cronjob definiere, der irgendeinen Zustand abfragen soll.
    Auch gibt es hier kein Problem mit Standby, da nicht tail -f die Platte aufwecken würde, sondern der Eintrag im LOG würde die Platte aufwecken.

    @rainmaker: Natürlich ist es eleganter,kürzer und schonender direkt am UDEV zu bleiben, das stimmt.

    Das schöne am tail -f | awk Konstrukt istjedoch die Universalität. Ich nutze das hier 'eh und brauche den AWK nur für den speziellen Fall anpassen.

    Es hängt tatsächlich am Geschmack und den jeweils technisch sehr unterschiedlichen Anforderungen ab ;-).

  13. #13
    Registrierter Benutzer
    Registriert seit
    Dec 2003
    Ort
    Dettenhausen
    Beiträge
    22.054
    tails oder sonstige "Operationen" auf Logfiles müssen aber meist ein paar Eventualitäten mitbeachten, die andere Methoden nicht erfordern, z.B. logrotate, löschen, ...
    Ich bin root - ich darf das.

  14. #14
    Rain_maker
    Gast
    Zitat Zitat von marce Beitrag anzeigen
    ..... z.B. logrotate, löschen, ...
    ACK, und genau da knallt es dann trotz (oder wegen? :-)) "-f".

  15. #15
    Sith Lord
    Registriert seit
    Apr 2009
    Beiträge
    1.438
    Zitat Zitat von Henning14 Beitrag anzeigen
    @Oziris: Es ist kein "polling", da gerade nicht ständig irgendetwas abgefragt wird, sondern an ein Event lediglich ein weiterer Befehl angehängt wird.

    Pollen tue ich, wenn ich einen minütlichen cronjob definiere, der irgendeinen Zustand abfragen soll.
    Ich will jetzt nicht spitzfindig sein, aber tail -f / -F führt alle Sekunde (oder was man mit -s angibt) ein fstat64() aus. Für mich ist dass "Polling". Kann sein, dass Du das nicht so siehst. Ist vermutlich Definitiossache. Ich finde nur, ob es cron macht oder ob tail alle Sekunde guckt, was zwar effizienter ist, aber im Prinzip ist es trotzdem "Polling".

    Ich weiß nicht, was genau udevd oder hald machen. Vielleicht pollen sie auch wild durch die Gegend, aber auf deren Ebene wäre es auch nicht so wild, weil das dann nur dort geschieht und sie andere Programme eventorientiert starten. Da müssen keine weiteren Prozesse laufen, die starten erst, wenn sie wirklich benötigt werden. ... und udevd und hald laufen sowieso meist, es sei denn, man hat ein sehr exotisches System. Da wäre es doch Verschwendung, wenn man sie nicht nutzt, obwohl es natürlich etwas komplizierter ist.

    Zitat Zitat von marce Beitrag anzeigen
    tails oder sonstige "Operationen" auf Logfiles müssen aber meist ein paar Eventualitäten mitbeachten, die andere Methoden nicht erfordern, z.B. logrotate, löschen, ...
    Zitat Zitat von Rain_maker Beitrag anzeigen
    ACK, und genau da knallt es dann trotz (oder wegen? :-)) "-f".
    Ja da hilft evtl. das große "-F", oder?

Ähnliche Themen

  1. WinTV PVR USB2 Module
    Von ThoR333 im Forum Fernsehen
    Antworten: 8
    Letzter Beitrag: 06.08.08, 20:40
  2. opensuse 10.2 wlan Problem
    Von CM Punk im Forum Anbindung an die Aussenwelt
    Antworten: 38
    Letzter Beitrag: 21.02.08, 21:17
  3. USB-Stick in Maus
    Von Der Papst im Forum Selbstgebaute Elektronik
    Antworten: 10
    Letzter Beitrag: 30.04.07, 20:25
  4. suse 10.2 vs. USB HDD
    Von gabs im Forum System installieren und konfigurieren
    Antworten: 2
    Letzter Beitrag: 18.04.07, 13:53
  5. USB-Festplatten beim booten erkennen / mounten
    Von Stradti im Forum System installieren und konfigurieren
    Antworten: 8
    Letzter Beitrag: 06.10.06, 20:01

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •