hab da mal ein autostart/init script für Redhat/CentOS gebastelt. bin kein Programmierer, hab ein bestehendes kopiert und rumgefummelt, bis es funktioniert hat. ich gebe also keine Garantie drauf ::)
Installation:
das init file unter /etc/init.d/fhem erstellen
mit chkconfig die init links erstellen lassen:
chkconfig --add fhem
fhem starten
service fhem start
man kann damit u.a. auch das config file sichern:
service fhem save
hier das File:
#!/bin/bash
#
# /etc/rc.d/init.d/fhem
#
# fhem house automation service
# http://www.fhem.de
#
# chkconfig: 2345 80 30
# description: fhem house automation service
# processname: fhem.pl
# config: /opt/fhem/fhem.cfg
# pidfile: /opt/fhem/fhem.pid
#
### BEGIN INIT INFO
# Provides: fhem service
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop fhem
# Description: fhem house automation service
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
RETVAL=0
prog="fhem"
lockfile=/var/lock/subsys/$prog
pidfile=/opt/fhem/fhem.pid
config=/opt/fhem/fhem.cfg
fhemcmd='/opt/fhem/fhem.pl 7072'
status -p $pidfile -l $(basename $lockfile) fhem >/dev/null 2>&1
running=$?
start() {
echo -n $"Starting fhem: "
cd /opt/fhem
/opt/fhem/fhem.pl $config 2>/dev/null 1>&2 && success || failure $"$prog start"
RETVAL=$?
[ $RETVAL -eq 0 ] && touch $lockfile
echo
return $RETVAL
}
stop() {
echo -n $"Shutting down fhem: "
$fhemcmd shutdown 2>/dev/null 1>&2 && success || failure $"$prog stop"
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f $lockfile $pidfile
echo
return $RETVAL
}
reload() {
echo -n $"Reloading fhem: "
$fhemcmd rereadcfg 2>/dev/null 1>&2 && success || failure $"$prog reload"
RETVAL=$?
echo
return $RETVAL
}
save() {
echo -n $"saving fhem config: "
$fhemcmd save 2>/dev/null 1>&2 && success || failure $"$prog save"
RETVAL=$?
echo
return $RETVAL
}
info() {
$fhemcmd fheminfo
}
# See how we were called.
case "$1" in
start)
[ $running -eq 0 ] && exit 0
start
;;
stop)
[ $running -eq 0 ] || exit 0
stop
;;
restart)
stop
start
;;
reload)
[ $running -eq 0 ] || exit 7
reload
;;
save)
[ $running -eq 0 ] || exit 7
save
;;
info)
[ $running -eq 0 ] || exit 7
info
;;
status)
status -p $pidfile -l $(basename $lockfile) fhem
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|save|info|status}"
exit 2
esac
exit $?
Hallo,
kleine Kritik:
Bei dem von Dir angegebenen Script wird fhem mit root-rechten gestatet. Aus Security-Gründen sollte es mit einem eigenen user laufen.
Habe es deshalb bei mir (ist allerdings gentoo) anders gelöst.
Gruß,
Werner
Zitat von: Wernieman am 06 Januar 2014, 11:16:53
Hallo,
kleine Kritik:
Bei dem von Dir angegebenen Script wird fhem mit root-rechten gestatet. Aus Security-Gründen sollte es mit einem eigenen user laufen.
Habe es deshalb bei mir (ist allerdings gentoo) anders gelöst.
Gruß,
Werner
Hallo!
Wie hast du das bei Gentoo gelöst?
Grüße
Johannes
Eigene fhem user. Diesem dann die Nötigen Rechte für die tt5yXXX gegeben und im init.d script per "su - fhem" gestartet.
Was für Info brauchst Du genau?
Zitat von: Wernieman am 29 April 2014, 14:46:49
Eigene fhem user. Diesem dann die Nötigen Rechte für die tt5yXXX gegeben und im init.d script per "su - fhem" gestartet.
Was für Info brauchst Du genau?
Kannst du mir das init-script schicken?
Grüße
Johannes
Hier nochmals für die "Allgemeinheit":
Ist aber nicht soooo dolle ;o) und mehr mit der "heißen Nadel" gestrickt. Es wird bei JEDEM runterfahren die config gesichert!
Vorraussetzung: telnet mit Passwort-Zugriff
Bitte die Variablen "dir" und "pw" anpassen.
#!/sbin/runscript
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
extra_commands="reload save"
dir="/opt/fhem"
pw="Passwort, bitte anpassen"
depend() {
use net lircd
need dbus mpd
}
start() {
ebegin "Starting fhem"
cd $dir
su - fhem -c "${dir}/fhem.pl /etc/fhem/fhem.cfg >>/var/log/fhem/log 2>&1"
error=$?
eend $error
}
stop() {
ebegin "Stopping fhem"
${dir}/fhem.pl localhost:7072 $pw save shutdown
eend $?
}
reload() {
ebegin "Reloading fhem-config"
${dir}/fhem.pl localhost:7072 $pw rereadcfg
eend $?
}
save() {
ebegin "Save fhem-config"
${dir}/fhem.pl localhost:7072 $pw save
eend $?
}
Geplant:
Umstellung auf Zugriff per SSL, ist dieses gewünscht?
Hm ein Passwort im init Skript ist aber nicht schön!
Jep .. nur wie willst Du es sonst lösen? Wollte auch keinen "offenen" telnet-Zugang .....
Nein aber man kann zum Beispiel das Passwort in einer separaten Datei abspeichern und dann "sourcen"!
Eine Datei unter dem Fhem Homeverzeichnis erstellen:
vi .fhempassword
mit dem Inhalt
pw=meinpasswort
Rechte setzen:
chmod 600 .fhempassword
und im Startskript die Datei "sourcen"4t:
. "$dir/.fhempassword"
!?
Jenau so hatte ich es "langfristig" vor ... ;o)
Ok ;-) Dann bin ich ja beruhigt ;)
wobei .. ich würde die Datei nicht mit . "$dir/.fhempassword" einlesen, sondern eher mit "grep | awk" o.Ä. expliziet die Parameter setzen lassen ... was denkst Du?
Zitat von: Wernieman am 05 Mai 2014, 09:56:38
wobei .. ich würde die Datei nicht mit . "$dir/.fhempassword" einlesen, sondern eher mit "grep | awk" o.Ä. expliziet die Parameter setzen lassen ... was denkst Du?
Warum kompliziert wenn es auch einfach geht?
Wenn du validieren willst, musst du eh noch ein bissel drumrumskripten!