[gelöst] Shellscript von notify aufrufen

Begonnen von IchEben, 05 Oktober 2017, 03:40:36

Vorheriges Thema - Nächstes Thema

IchEben

Hey Leute,

ich bin vor ein paar Tagen auf FHEM gestoßen und habe mir gleich einen PI bestellt und angefangen wie wild meine schon vorhandenen Hausautomatisierungssysteme einzubinden. Das hat bis jetzt auch alles wunderbar funktioniert. :D
Nun versuche ich ein automatisches Backup auf ein NAS einzurichten. Dafür habe ich mir ein kleines Shellscript geschrieben welches aufgerufen werden soll, nachdem FHEM das Backup ausgeführt hat. Das Script hat also nur die Aufgabe die Letzte Backupdatei auf den NAS zu kopieren.

Allerdings scheitere ich daran, das Script aus FHEM heraus aufzurufen. Ich habe mir schon sämtliche Beiträge im Forum zum Thema ,,Shellscript aufrufen" angeschaut und schon viel Probiert. Leider hat nichts funktioniert.  :(
Das Script befindet sich in einem Unterferzeichnis ,,shellscripts" im FHEM Ordner. Sowohl das Verzeichnis wie auch das Script gehören dem FHEM Benutzer, außerdem sind read und execute flags gesetzt.
Es fehlen auch keine Berechtigungen, ich kann das Script problemlos ausführen, wenn ich als fhem Benutzer angemeldet bin.
Interessanterweise funktioniert der Aufruf von ls:
my $outt = `ls`;
Nicht aber der Aufruf des Scripts.
Ich bin hier langsam am Verzweifeln. Hat Jemand ne Idee?

Das Shellscript:
#!/bin/bash

#Dises script kopiert das letzte von FHEM erzeugte backup auf ein NAS
fhem_backup_folder="../backup/"
backup_folder="/media/fritzbox-nas/BACKUP/PI/"
max_files_on_nas=20
max_files_on_pi=20
wildcard="FHEM*.tar.gz"

#change workdir
cd $fhem_backup_folder
#alle dateien im backup verzeichnis durchgehen
count=0;
for i in `ls $wildcard | sort -rV`; do
        if (($count == 0)); then
                echo "copy" $i "to backupfolder";
                cp $i $backup_folder$i
        elif (($count >= max_files_on_pi)); then
                echo "delete old backup:" $i;
                `rm $i`;
        fi
        ((++count));
done;
#alle dateien auf dem nas durchgehen
count=0;
for i in `ls $backup_folder$wildcard | sort -rV`; do
        if (($count >= max_files_on_nas)); then
                echo "delete old backup on nas:" $i;
                `rm $i`;
        fi
        ((++count));
done;

Mein Notify:
global.backup.done.* {
   my $outt = `shellscripts/backup.sh`;
   fhem("set telegram message test $outt");
}

IchEben

Oh mann, es ist einfach schon zu spät  ::)

grade in's Logfile geschaut:
shellscripts/backup.sh: line 11: cd: ../backup/: No such file or directory
ls: cannot access FHEM*.tar.gz: No such file or directory
ls: cannot access /media/fritzbox-nas/BACKUP/PI/FHEM*.tar.gz: No such file or directory

#change workdir
cd /opt/fhem/backup/
#cd $fhem_backup_folder


funktioniert jetzt  ;D