Autor Thema: autostart/init script für Redhat/CentOS  (Gelesen 4943 mal)

doomi

  • Gast
autostart/init script für Redhat/CentOS
« 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 fhemfhem 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 $?


Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 3206
Antw:autostart/init script für Redhat/CentOS
« Antwort #1 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
- Bitte um Input für Output
- When there is a Shell, there is a Way

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

ebnerjoh

  • Gast
Antw:autostart/init script für Redhat/CentOS
« Antwort #2 am: 28 April 2014, 10:47:08 »
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

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 3206
Antw:autostart/init script für Redhat/CentOS
« Antwort #3 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?
- Bitte um Input für Output
- When there is a Shell, there is a Way

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

ebnerjoh

  • Gast
Antw:autostart/init script für Redhat/CentOS
« Antwort #4 am: 29 April 2014, 14:59:20 »
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

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 3206
Antw:autostart/init script für Redhat/CentOS
« Antwort #5 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?
- Bitte um Input für Output
- When there is a Shell, there is a Way

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

Offline P.A.Trick

  • Hero Member
  • *****
  • Beiträge: 1627
  • Love it, change it or leave it
Antw:autostart/init script für Redhat/CentOS
« Antwort #6 am: 29 April 2014, 22:14:37 »
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

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 3206
Antw:autostart/init script für Redhat/CentOS
« Antwort #7 am: 30 April 2014, 14:39:43 »
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

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

Offline P.A.Trick

  • Hero Member
  • *****
  • Beiträge: 1627
  • Love it, change it or leave it
Antw:autostart/init script für Redhat/CentOS
« Antwort #8 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 .fhempasswordmit dem Inhalt
pw=meinpasswort
Rechte setzen:
chmod 600 .fhempasswordund 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

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 3206
Antw:autostart/init script für Redhat/CentOS
« Antwort #9 am: 03 Mai 2014, 12:36:36 »
Jenau so hatte ich es "langfristig" vor ... ;o)
- Bitte um Input für Output
- When there is a Shell, there is a Way

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

Offline P.A.Trick

  • Hero Member
  • *****
  • Beiträge: 1627
  • Love it, change it or leave it
Antw:autostart/init script für Redhat/CentOS
« Antwort #10 am: 05 Mai 2014, 09:40:44 »
Ok ;-) Dann bin ich ja beruhigt ;)
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

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 3206
Antw:autostart/init script für Redhat/CentOS
« Antwort #11 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?
- Bitte um Input für Output
- When there is a Shell, there is a Way

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

Offline P.A.Trick

  • Hero Member
  • *****
  • Beiträge: 1627
  • Love it, change it or leave it
Antw:autostart/init script für Redhat/CentOS
« Antwort #12 am: 06 Mai 2014, 20:28:37 »
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

 

decade-submarginal