Mail aus udev Skript

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
chr.gogolin
Beiträge: 441
Registriert: 12.10.2005 23:09:28
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Mail aus udev Skript

Beitrag von chr.gogolin » 23.05.2010 08:37:49

Hallo, ich habe hier ein Skript das per udev rule beim Anstecken einer usb Festplatte ausgeführt wird. Das klappt auch ganz ausgezeichnet.

Als letzte tat soll das Skript eine Mail an root verschicken.

Code: Alles auswählen

echo "Backup at `date \"+%F %T\"` finished successfully\!" | /usr/bin/mail -s "Backup" root
Auch das funktioniert wenn ich das Skript manuell als root oder normaler Benutzer starte.

Aber: Wird das Skript von udev aufgerufen arbeitet es zwar ganz normal, verschickt aber keine Mail.

Woran liegt das?
"Linux supports the notion of a command line or a shell for the same reason that only children read books with only pictures in them." - Bill Garrett

Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: Mail aus udev Skript

Beitrag von Colttt » 23.05.2010 11:04:42

zeig uns doch bitte mal das komplette udev-skript, dann können wir dir bestimmt weiterhelfen
Debian-Nutzer :D

ZABBIX Certified Specialist

chr.gogolin
Beiträge: 441
Registriert: 12.10.2005 23:09:28
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Re: Mail aus udev Skript

Beitrag von chr.gogolin » 23.05.2010 22:54:59

Das volle Skript wird nicht viel helfen. Es enthält hauptsächlich ein paar Aufrufe von mount/umount, rsync und ein paar ifs um mit möglichen Fehlern umzugehen und ein paar echos um Output auf tty8 zu erzeugen. Modulo der Ifs und einige der echos macht das fragliche Skript /usr/local/bin/usbbackup folgendes:

Code: Alles auswählen

#!/bin/bash
chvt 8 #Auf tty8 wechseln.
exec &> /dev/tty8 #Ausgabe umleiten.
[...] #hier wird das Backup mit rsync gemacht und bei Fehlern abgebrochen.
echo -ne "Backup at `date \"+%F %T\"` \E[32;40mfinished successfully!\E[0m\r\f" #Bestätigung auf tty8.
echo "Backup at `date \"+%F %T\"` finished successfully\!" | /usr/bin/mail -s "Backup" root #Email verschicken.
echo "Backup at `date \"+%F %T\"` finished successfully\!" >> /tmp/lastusbbackup #Test ob alles durchgelaufen ist.
exit 0
Die udev Regel die zum Aufruf führt ist folgende:

Code: Alles auswählen

BUS=="usb", KERNEL=="sd?1", SYSFS{idProduct}=="b159", SYMLINK+="externalbackup", RUN+="/usr/local/bin/usbbackup"
Nach dem Aufrum des Skripts durch udev enthält /tmp/lastbackup auch die durch das letzte echo erzeugte Zeile, das Backup wird erstellt und die Bestätigung auf tty8 ausgegeben.

Wenn ich das Skript manuell aufrufe wird auch die Email verschickt, aber eben nicht wenn das Skript durch udev gestartet wurde.
"Linux supports the notion of a command line or a shell for the same reason that only children read books with only pictures in them." - Bill Garrett

gmax
Beiträge: 16
Registriert: 17.05.2010 23:09:28
Lizenz eigener Beiträge: GNU General Public License

Re: Mail aus udev Skript

Beitrag von gmax » 24.05.2010 03:22:42

das klingt für mich wie ein Problem mit den Rechten, evtl. fehlen die Rechte um Mails verschicken zu können

chr.gogolin
Beiträge: 441
Registriert: 12.10.2005 23:09:28
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Re: Mail aus udev Skript

Beitrag von chr.gogolin » 24.05.2010 13:04:16

Werden die befehle von udev nicht mit root Rechten ausgeführt?
"Linux supports the notion of a command line or a shell for the same reason that only children read books with only pictures in them." - Bill Garrett

Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: Mail aus udev Skript

Beitrag von Colttt » 24.05.2010 19:30:39

mach mal ein skript was einfach nur eine datei erstellt, dann probier das udev-ereignis aus wenn es bis zum schluss läuft müsste die datei erstellt werden.. dann liegts schonmal an deinem mail-skript..

und dann erstell mal in deinem mail-skript am anfang und ende auch eine datei oder lass was in einer datei hineinschreiben, wenn das geht stimmt was mit dem mailen nicht..
Debian-Nutzer :D

ZABBIX Certified Specialist

Benutzeravatar
detix
Beiträge: 1744
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: Mail aus udev Skript

Beitrag von detix » 24.05.2010 21:26:57

Kann es sein, das hier das Ausrufezeichen (!) der Übeltäter ist?
Dein udev-Skript wird ja offensichtlich ausgeführt, laß mal den backslash weg und füge ein Leerzeichen hinzu:

Code: Alles auswählen

$ echo "Backup at `date '+%F %T'` finished successfully! "
Backup at 2010-05-24 21:16:40 finished successfully!
  #deine Version:
$ echo "Backup at `date '+%F %T'` finished successfully\!"
Backup at 2010-05-24 21:17:06 finished successfully\!
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

chr.gogolin
Beiträge: 441
Registriert: 12.10.2005 23:09:28
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Re: Mail aus udev Skript

Beitrag von chr.gogolin » 14.06.2010 23:51:51

Danke! Das '!' scheint - warum auch immer - der Übeltäter gewesen zu sein.
"Linux supports the notion of a command line or a shell for the same reason that only children read books with only pictures in them." - Bill Garrett

Antworten