FHEM Forum

FHEM - Hardware => Server - Linux => Thema gestartet von: doomi am 26 Dezember 2013, 13:37:22

Titel: autostart/init script für Redhat/CentOS
Beitrag von: doomi am 26 Dezember 2013, 13:37:22
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 $?

Titel: Antw:autostart/init script für Redhat/CentOS
Beitrag 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
Titel: Antw:autostart/init script für Redhat/CentOS
Beitrag von: ebnerjoh am 28 April 2014, 10:47:08
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
Titel: Antw:autostart/init script für Redhat/CentOS
Beitrag 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?
Titel: Antw:autostart/init script für Redhat/CentOS
Beitrag von: ebnerjoh am 29 April 2014, 14:59:20
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
Titel: Antw:autostart/init script für Redhat/CentOS
Beitrag von: Wernieman am 29 April 2014, 16:34:01
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?
Titel: Antw:autostart/init script für Redhat/CentOS
Beitrag von: P.A.Trick am 29 April 2014, 22:14:37
Hm ein Passwort im init Skript ist aber nicht schön!
Titel: Antw:autostart/init script für Redhat/CentOS
Beitrag von: Wernieman am 30 April 2014, 14:39:43
Jep .. nur wie willst Du es sonst lösen? Wollte auch keinen "offenen" telnet-Zugang .....
Titel: Antw:autostart/init script für Redhat/CentOS
Beitrag von: P.A.Trick am 30 April 2014, 19:03:56
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"

!?
Titel: Antw:autostart/init script für Redhat/CentOS
Beitrag von: Wernieman am 03 Mai 2014, 12:36:36
Jenau so hatte ich es "langfristig" vor ... ;o)
Titel: Antw:autostart/init script für Redhat/CentOS
Beitrag von: P.A.Trick am 05 Mai 2014, 09:40:44
Ok ;-) Dann bin ich ja beruhigt ;)
Titel: Antw:autostart/init script für Redhat/CentOS
Beitrag 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?
Titel: Antw:autostart/init script für Redhat/CentOS
Beitrag von: P.A.Trick am 06 Mai 2014, 20:28:37
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!