Hallo zusammen,
ich habe seit einigen Jahren eine DS 212+ im Einsatz gehabt und nun auf eine 918+ gewechselt.
Einer der Gründe war, für FHEM das Active Perl nutzen zu können.
Auf der 918+ ist also nun Active Perl installiert und FHEM läuft problemlos.
Nun wollte ich das Start-Script so ändern, dass ich es nicht manuell ändern muss, wenn ich mal eine neue Version von Active Perl installieren.
Dadurch könnte sich das Installationsverzeichnis ändern, also möchte ich dynamisch das Verzeichnis ermitteln, in dem Perl installiert ist.
....ich könnte auch Perl in einem Verzeichnis ohne Versionsnummer installieren und eine neue Version einfach drüber installieren.
Der andere Weg sollte aber auch funktionieren, wenn ich nach 3 Jahren nicht mehr weiss, was ich da angestellt habe
Gut, ich habe also das Start-Script angepasst und den Pfad so gesetzt: perl_BIN=$(command -v perl)
Hier das komplett Script:
Über das Terminal und mit ./fhem.sh funktioniuert das Script, alles bestens.
Wie man sieht habe ich die Fehlermeldungen in eine Datei umgeleitet, um eine Art debugging zu ermöglichen.
Starte und Stoppe ich über das Paketzentrum (also das Start-Stop-Status Script der Syno), funktiniert das fhem.sh nicht.
Folgenden Fehlermeldungen werden in die Error-Datei geschrieben (erste Zeile Stop, 2. Zeile Start):
Ich habe auch schon 2 Test-Scripts angelegt, so dass eines das andere aufruft. Aber auch das funktiniert über das Terminal.
Setze ich den Pfad mit einer direkten Zuweisung (ist auskommentiert im Script) dann klappt es auch über das Paketzentrum.
Ich bin mit meinem Latein am Ende, kann mir hier jemand helfen?
Vielen Dank vorab für Eure Hilfe und schöne Grüße,
Dirk
ich habe seit einigen Jahren eine DS 212+ im Einsatz gehabt und nun auf eine 918+ gewechselt.
Einer der Gründe war, für FHEM das Active Perl nutzen zu können.
Auf der 918+ ist also nun Active Perl installiert und FHEM läuft problemlos.
Nun wollte ich das Start-Script so ändern, dass ich es nicht manuell ändern muss, wenn ich mal eine neue Version von Active Perl installieren.
Dadurch könnte sich das Installationsverzeichnis ändern, also möchte ich dynamisch das Verzeichnis ermitteln, in dem Perl installiert ist.
....ich könnte auch Perl in einem Verzeichnis ohne Versionsnummer installieren und eine neue Version einfach drüber installieren.
Der andere Weg sollte aber auch funktionieren, wenn ich nach 3 Jahren nicht mehr weiss, was ich da angestellt habe
Gut, ich habe also das Start-Script angepasst und den Pfad so gesetzt: perl_BIN=$(command -v perl)
Hier das komplett Script:
Rich (BBCode):
#!/bin/sh
exec 2>> /volume1/@appstore/fhem/bin/err_fhem.log
#
#
HOME=/usr/local/fhem/opt
PATH=$HOME:$PATH
export PATH
cd ${HOME}
# Befehl Which Perl eingefuegt
fhem_BIN=${HOME}/fhem.pl
perl_BIN=$(command -v perl)
#perl_BIN=$(type perl)
#perl_BIN=/opt/ActivePerl-5.24/bin/perl
test -x ${fhem_BIN} || { echo "${fhem_BIN} not installed";
if [ "$1" = "stop" ]; then exit 0;
else exit 5; fi; }
# Check for existence of needed config file and read it
fhem_CONFIG=${HOME}/fhem.cfg
test -r ${fhem_CONFIG} || { echo "${fhem_CONFIG} not existing";
if [ "$1" = "stop" ]; then exit 0;
else exit 6; fi; }
fhem_LOG=${HOME}/log/fhem-`date +"%Y-%m"`.log
#
case "$1" in
start)
echo "Starting fhem DS "
# Aufruf geaendert
$perl_BIN $fhem_BIN $fhem_CONFIG
;;
stop)
echo "Shutting down fhem DS "
# Aufruf geaendert
$perl_BIN $fhem_BIN 7072 shutdown
;;
restart)
$0 stop
$0 start
;;
status)
echo -n "Checking for service fhem "
ps|grep fhem.pl
;;
log)
test -r $fhem_LOG || { echo "$fhem_LOG not existing"; exit 0; }
echo $fhem_LOG
;;
*)
echo "Usage: $0 {start|stop|status|restart|log}"
exit 1
;;
esac
exit 0
Über das Terminal und mit ./fhem.sh funktioniuert das Script, alles bestens.
Wie man sieht habe ich die Fehlermeldungen in eine Datei umgeleitet, um eine Art debugging zu ermöglichen.
Starte und Stoppe ich über das Paketzentrum (also das Start-Stop-Status Script der Syno), funktiniert das fhem.sh nicht.
Folgenden Fehlermeldungen werden in die Error-Datei geschrieben (erste Zeile Stop, 2. Zeile Start):
Rich (BBCode):
/usr/local/fhem/bin/fhem.sh: /usr/local/fhem/opt/fhem.pl: /usr/bin/perl: bad interpreter: No such file or directory
/usr/local/fhem/bin/fhem.sh: /usr/local/fhem/opt/fhem.pl: /usr/bin/perl: bad interpreter: No such file or directory
Ich habe auch schon 2 Test-Scripts angelegt, so dass eines das andere aufruft. Aber auch das funktiniert über das Terminal.
Setze ich den Pfad mit einer direkten Zuweisung (ist auskommentiert im Script) dann klappt es auch über das Paketzentrum.
Ich bin mit meinem Latein am Ende, kann mir hier jemand helfen?
Vielen Dank vorab für Eure Hilfe und schöne Grüße,
Dirk