[geloest] init script als user starten

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
sharbich
Beiträge: 284
Registriert: 27.09.2013 21:12:40

[geloest] init script als user starten

Beitrag von sharbich » 04.02.2017 13:13:56

Hallo Ihr Lieben,
könnt Ihr mir weiterhelfen wie das untere Skript als user starten kann?

Code: Alles auswählen

### BEGIN INIT INFO
# Provides:          mrtg
# Required-Start:    
# Required-Stop:     
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: mrtg init script
# Description:  This file is used to start, stop, restart, 
#               and determined status of the mrtg daemon.
# Author:       iceflatline <iceflatline@gmail.com>
### END INIT INFO
 
### START OF SCRIPT
set -e
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="mrtg"
NAME=mrtg
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="/etc/mrtg.cfg"
PIDFILE=/etc/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
 
# Exit if the mrtg package is not installed
[ -x "$DAEMON" ] || exit 0
 
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
 
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
 
# Function that starts the mrtg daemon
start()
{
	env LANG=C start-stop-daemon --start --quiet \
	--exec $DAEMON -- $DAEMON_ARGS
}
 
# Function that stops the mrtg daemon
stop()
{
	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 \
	--pidfile $PIDFILE 
}
 
case "$1" in
  start)
	log_daemon_msg "Starting $DESC" 
	start
	case "$?" in
		0) log_end_msg 0 ;;
		1) log_end_msg 1 ;;
	esac
	;;
  stop)
	log_daemon_msg "Stopping $DESC"
	stop
	case "$?" in
		0) log_end_msg 0 ;;
		1) log_end_msg 1 ;;
	esac
	;;
  restart|force-reload)
	log_daemon_msg "Restarting $DESC" 
	stop
	case "$?" in
	  0|1)
		start
		case "$?" in
			0) log_end_msg 0 ;;
			1) log_end_msg 1 ;; 
		esac
		;;
	esac
	;;
	status)
    status_of_proc "$DAEMON" "$NAME"  
    ;;
  *)
	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" 
	;;
esac
exit 0
### END OF SCRIPT
Vorab herzlichen Dank für Eure Unterstützung.
Lieben Gruß von Stefan Harbich
Zuletzt geändert von sharbich am 20.02.2017 22:15:41, insgesamt 2-mal geändert.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: init script als user starten

Beitrag von rendegast » 04.02.2017 20:30:23

Zumindest
PIDFILE=/etc/$NAME.pid
kann ein nicht-root nicht schreiben.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

sharbich
Beiträge: 284
Registriert: 27.09.2013 21:12:40

Re: init script als user starten

Beitrag von sharbich » 20.02.2017 22:13:43

Hallo Ihr Lieben,
so habe ich es hinbekommen.

Code: Alles auswählen

#!/bin/bash
# /etc/init.d/mrtg

#
# Creation:    28.10.2013
# Last Update: 28.10.2013
#
# Written by Georg Kainzbauer (http://www.gtkdb.de)
#

### BEGIN INIT INFO
# Provides:          MRTG
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: MRTG
# Description:       MRTG - The Multi Router Traffic Grapher
### END INIT INFO

CONFIGFILE=/etc/mrtg.cfg
LOGFILE=/var/log/mrtg/mrtg.log
PIDFILE=/run/mrtg.pid

start()
{
  echo "Starting MRTG..."
  env LANG=C /usr/bin/mrtg ${CONFIGFILE} --user=nagios --logging ${LOGFILE} --daemon --pid-file ${PIDFILE}
}

stop()
{
  echo "Stopping MRTG..."
  kill -9 $(cat ${PIDFILE}) >/dev/null 2>&1
  rm -f ${PIDFILE}
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    ;;
esac

exit 0
Lieben Gruß von Stefan Harbich

Antworten