Hallo zusammen,
ich habe ein Proble m, dass mein Skript teilweise nicht in der rc.local läuft.
Hier ist das SKript, welches in einer Endlosschleiße einen GPIO-Eingang abfragt und dann in eine Aktion startet.
Über die rc.local gestartet klappt die snapshot-Erstellung mit curl wunderbar. Ebenso der Syslog-Log Eintrag.
ABER: die Mail wird nicht versendet
Starte ich das Skript aber mittels sudo, dann wird die Mail einwandfrei versendet.
Was mache ich hier falsch?
Skript:
Bash
#!/bin/bash
# MUSS ALS root oder mit sudo ausgefuehrt werden!!!
# Das Pin als Eingang definieren
echo "4" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio4/direction
# Den Zustand des Eingangs lesen
previous=$(cat /sys/class/gpio/gpio4/value)
# Endlose Schleife
while true
do
# Den Zustand des Eingangs lesen
pin=$(cat /sys/class/gpio/gpio4/value)
# Wenn der Eingang von 0 auf 1 gewechselt hat
if [ $pin -gt $previous ]
then
# Das Programm starten
#echo "Mail"
# Sicherstellen, dass motion-mmal läuft mit_
# cd motion-mmal
# ./motion-mmal -n -c motion-mmalcam.conf
# Für Autostart siehe hier: http://rbnrpi.wordpress.com/project-list/setting-up-wireless-motion-detect-cam/
# Fuer Snapshot siehe hier: http://jeremyblythe.blogspot.de/2012/07/raspberry-pi-gpio-and-motion.html
# folgende Zeile erzeugt ein Bild DATUM_snapshot.jpg UND einen symlink auf den jeweils letzten snapshot
curl http://localhost:8080/0/action/snapshot
# kurz warten bis snapshot angelegt wurde
sleep 5
#Email mit dem lastsnap senden
imt=`date --rfc-2822`
imf=`date -d "$imt" +%Y%m%d%H%M%S`
irt=`date -d "$imt" +%e.' '%B' '%Y' | '%H:%M:%S' Uhr'`
echo -e "Tuerklingel - ($irt)\nSiehe Anhang" | mutt -a /home/pi/lastsnap.jpg -s "Tuerklingel ($irt)" -- zieladresse@gmx.de
#Warten bevor Dateien gelöscht werden (für finale Version auf 120sek oder mehr setzen):
sleep 7
# alle alten Snapshots löschen
find /home/pi -type f -name "*snapshot*.jpg" -exec rm -f {} \;
# alle alten AVIs löschen
find /home/pi -type f -name "*.avi" -exec rm -f {} \;
#syslog Nachricht schreiben
logger -i -t Tuerklingel -- Es hat geklingelt.
#_____________Klingelprogramm-ENDE
else
# Eine halbe Sekunde schlafen, damit der Prozessor nicht heissläuft
sleep 0.5
fi
# Der aktuelle Wert wird der alte Wert für den nächsten Durchlauf
previous=$pin
done
Alles anzeigen
Auszug meiner rc.local: