autostart/init script für Redhat/CentOS

Begonnen von doomi, 26 Dezember 2013, 13:37:22

Vorheriges Thema - Nächstes Thema

doomi

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 $?


Wernieman

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
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

ebnerjoh

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

Wernieman

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?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

ebnerjoh

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

Wernieman

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?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

P.A.Trick

Hm ein Passwort im init Skript ist aber nicht schön!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Wernieman

Jep .. nur wie willst Du es sonst lösen? Wollte auch keinen "offenen" telnet-Zugang .....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

P.A.Trick

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"

!?
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Wernieman

Jenau so hatte ich es "langfristig" vor ... ;o)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

P.A.Trick

Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Wernieman

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?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

P.A.Trick

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!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn