[Gelöst] udev regel ...

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
DEBIANUNDANDREAS
Beiträge: 1304
Registriert: 01.06.2013 10:37:46

[Gelöst] udev regel ...

Beitrag von DEBIANUNDANDREAS » 24.11.2014 16:59:22

Hallo. Ich möchte um mir eine wiederkehrende Tätigkeit (Syncronisierung ) zu erleichtern eine udevregel bauen.
in >>> /etc/udev/rules.d/backup0123456789.rules
habe ich folgenden code eingetippt >>>

Code: Alles auswählen

# USB-Stick für Backups
KERNEL=="sd?1"
#KERNEL=="sd?1", SUBSYSTEMS=="usb", ATTRS{serial}=="ID 0781:5571"
KERNEL=="sd?1", SUBSYSTEMS=="usb", ATTRS{serial}=="ID 0781:5571", SYMLINK+="backup", ACTION=="add", RUN+="/media/andy/script/backup.sh"
Auf dem USBStick habe ich folgendes Script backup.sh

Code: Alles auswählen

sudo cp -r -u '/home/internet/Schreibtisch/Scripting Vorlagen'  '/media/internet/Scripts' 
gespeichert.
Wenn ich den USB Stick in den USBPort einstecke tut sich nichts.
Ich hoffe mir kann jemand bei der Script Codeanpassung helfen?
Zuletzt geändert von DEBIANUNDANDREAS am 25.11.2014 08:32:09, insgesamt 1-mal geändert.

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: udev regel ...

Beitrag von smutbert » 24.11.2014 17:16:24

Nur drei Dinge:
  • so wie du es gepostet hast, fehlt deinem Skript die Shebang
  • udev führt die angegebenen Befehle als root aus, dh das sudo ist unnötig.
  • zumindest die Dateien auf fat-Dateisystemen, das man auf USB-Sticks ja meistens hat, sind nicht ausführbar, wenn man den Stick zB von Gnome/nautilus, Mate/Caja oder etwas ähnlichem mounten läßt und genau darauf deutet dein Mountpoint hin, was wiederum bedeutet, dass auch udev das Skript nicht ausführen kann.
Zum Testen von solchen Regeln und den aufgerufenen Skripten schreibe ich in das Skript zuerst einmal etwa so:

Code: Alles auswählen

#!/bin/bash
echo "cp -r -u /home/internet/Schreibtisch/Scripting\ Vorlagen  /media/internet/Scripts" >> /tmp/testlog
Dann siehst du danach an der Existenz von /tmp/testlog, dass das Skript ausgeführt wurde und wenn du Variablen und dergleichen verwendest, siehst du auch am Inhalt ob es funktioniert hätte.
Zuletzt geändert von smutbert am 24.11.2014 17:28:27, insgesamt 1-mal geändert.

Benutzeravatar
DEBIANUNDANDREAS
Beiträge: 1304
Registriert: 01.06.2013 10:37:46

Re: udev regel ...

Beitrag von DEBIANUNDANDREAS » 24.11.2014 17:22:48

Die USB-Stickpartition ist ext3 auf der sich das Script (backup.sh befindet) und das Script ist ausführbar. Das war auch in der Vergangenheit so.

Benutzeravatar
DEBIANUNDANDREAS
Beiträge: 1304
Registriert: 01.06.2013 10:37:46

Re: udev regel ...

Beitrag von DEBIANUNDANDREAS » 24.11.2014 17:36:16

Ich kann

Code: Alles auswählen

SYMLINK+="backup"
im Dateisystem auf der HDD nicht finden.

Benutzeravatar
habakug
Moderator
Beiträge: 4313
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: udev regel ...

Beitrag von habakug » 24.11.2014 18:45:25

Hallo!

Es müßte so lauten:

Code: Alles auswählen

KERNEL=="sd?1", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0781", ATTRS{idProduct}=="5571", SYMLINK+="backup", ACTION=="add", RUN+="/usr/local/bin/backup.sh"
"ATTRS{serial}" wäre die Seriennummer des USB-Sticks, ein anderer Wert. Die ID, die du verwendest setzt sich aus Hersteller- und Produkt-ID zusammen.
Es ist nicht empfehlenswert zu versuchen, ein Skript auszuführen, das sich auf dem (noch) nicht gemounteten Datenträger befindet. Das geht in die Hose. Du solltest das Skript, wie oben, z.B. nach "/usr/local/bin" verfrachten und von dort ausführen.
Der Symlink taucht dann übrigens in diesem Fall unter "/dev/backup" auf.

Gruss, habakug
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

Benutzeravatar
TRex
Moderator
Beiträge: 8069
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: udev regel ...

Beitrag von TRex » 24.11.2014 18:56:44

habakug hat geschrieben:Der Symlink taucht dann übrigens in diesem Fall unter "/dev/backup" auf.
War das nicht der Teil, den du gerade bei dir auf "usbstick" geändert hast?
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Benutzeravatar
habakug
Moderator
Beiträge: 4313
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: udev regel ...

Beitrag von habakug » 24.11.2014 19:22:36

Hallo!

@TRex
Du hast recht, habe das oben geändert.
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

Benutzeravatar
DEBIANUNDANDREAS
Beiträge: 1304
Registriert: 01.06.2013 10:37:46

Re: udev regel ...

Beitrag von DEBIANUNDANDREAS » 25.11.2014 06:11:34

Danke,habakug,
du hast mir geholfen mit
...

Code: Alles auswählen

ATTRS{idVendor}=="0781", ATTRS{idProduct}=="5571"
...
Du solltest das Skript, wie oben, z.B. nach "/usr/local/bin" verfrachten und von dort ausführen.
Trotzdem habe ich weiterhin ein Problem mit

Code: Alles auswählen

ATTRS{idVendor}=="0781", ATTRS{idProduct}=="5571
Was muss ich da ändern , zum Beispiel Platzhalter damit jeder USB Stick erkannt wird?

Benutzeravatar
DEBIANUNDANDREAS
Beiträge: 1304
Registriert: 01.06.2013 10:37:46

Re: udev regel ...

Beitrag von DEBIANUNDANDREAS » 25.11.2014 08:31:52

Durch dass weglassen von

Code: Alles auswählen

ATTRS{idVendor}=="0781", ATTRS{idProduct}=="5571"
konnte ich ein udevregel für mich finden, die das kopieren auf jeden USBStick ermöglicht.

Code: Alles auswählen

# USB-Stick für Backups
KERNEL=="sd?1"
KERNEL=="sd?1", SUBSYSTEMS=="usb", ACTION=="add", SYMLINK+="usbstick", RUN+="/usr/local/bin/backup.sh"
#KERNEL=="sd?1", SUBSYSTEMS=="usb", ATTRS{serial}=="ID 0781:5571"
# KERNEL=="sd?1", SUBSYSTEMS=="usb", ATTRS{serial}=="ID 0781:5571", SYMLINK+="backup", ACTION=="add", RUN+='/usr/local/bin/backup.sh' 
# KERNEL=="sd?1", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0781", ATTRS{idProduct}=="5571", SYMLINK+="backup", ACTION=="add", RUN+=
Damit ist dieser Thread gelöst.

Antworten