From 88edf6255bbc6c0ba87239608bb9b80656391330 Mon Sep 17 00:00:00 2001 From: Damien Miller Date: Sun, 30 Oct 2005 11:55:45 +1100 Subject: - (djm) [contrib/suse/openssh.spec contrib/suse/rc. sshd contrib/suse/sysconfig.ssh] Bug #1106: Updated SuSE spec and init files from imorgan AT nas.nasa.gov --- contrib/suse/rc.sshd | 133 +++++++++++++++++++++++++++++++++++---------------- 1 file changed, 93 insertions(+), 40 deletions(-) (limited to 'contrib/suse/rc.sshd') diff --git a/contrib/suse/rc.sshd b/contrib/suse/rc.sshd index f7d431ebb..573960bfa 100644 --- a/contrib/suse/rc.sshd +++ b/contrib/suse/rc.sshd @@ -1,80 +1,133 @@ #! /bin/sh -# Copyright (c) 1995-1998 SuSE GmbH Nuernberg, Germany. +# Copyright (c) 1995-2000 SuSE GmbH Nuernberg, Germany. # -# Author: Chris Saia +# Author: Jiri Smid # -# /sbin/init.d/sshd +# /etc/init.d/sshd # # and symbolic its link # -# /sbin/rcsshd +# /usr/sbin/rcsshd # +### BEGIN INIT INFO +# Provides: sshd +# Required-Start: $network $remote_fs +# Required-Stop: $network $remote_fs +# Default-Start: 3 5 +# Default-Stop: 0 1 2 6 +# Description: Start the sshd daemon +### END INIT INFO -. /etc/rc.config +SSHD_BIN=/usr/sbin/sshd +test -x $SSHD_BIN || exit 5 -# Determine the base and follow a runlevel link name. -base=${0##*/} -link=${base#*[SK][0-9][0-9]} +SSHD_SYSCONFIG=/etc/sysconfig/ssh +test -r $SSHD_SYSCONFIG || exit 6 +. $SSHD_SYSCONFIG -# Force execution if not called by a runlevel directory. -test $link = $base && START_SSHD=yes -test "$START_SSHD" = yes || exit 0 +SSHD_PIDFILE=/var/run/sshd.init.pid + +. /etc/rc.status + +# Shell functions sourced from /etc/rc.status: +# rc_check check and set local and overall rc status +# rc_status check and set local and overall rc status +# rc_status -v ditto but be verbose in local rc status +# rc_status -v -r ditto and clear the local rc status +# rc_failed set local and overall rc status to failed +# rc_reset clear local rc status (overall remains) +# rc_exit exit appropriate to overall rc status + +# First reset status of this service +rc_reset -# The echo return value for success (defined in /etc/rc.config). -return=$rc_done case "$1" in start) - echo -n "Starting service sshd" + if ! test -f /etc/ssh/ssh_host_key ; then + echo Generating /etc/ssh/ssh_host_key. + ssh-keygen -t rsa1 -b 1024 -f /etc/ssh/ssh_host_key -N '' + fi + if ! test -f /etc/ssh/ssh_host_dsa_key ; then + echo Generating /etc/ssh/ssh_host_dsa_key. + + ssh-keygen -t dsa -b 1024 -f /etc/ssh/ssh_host_dsa_key -N '' + fi + if ! test -f /etc/ssh/ssh_host_rsa_key ; then + echo Generating /etc/ssh/ssh_host_rsa_key. + + ssh-keygen -t rsa -b 1024 -f /etc/ssh/ssh_host_rsa_key -N '' + fi + echo -n "Starting SSH daemon" ## Start daemon with startproc(8). If this fails ## the echo return value is set appropriate. - startproc /usr/sbin/sshd || return=$rc_failed + startproc -f -p $SSHD_PIDFILE /usr/sbin/sshd $SSHD_OPTS -o "PidFile=$SSHD_PIDFILE" - echo -e "$return" + # Remember status and be verbose + rc_status -v ;; stop) - echo -n "Stopping service sshd" + echo -n "Shutting down SSH daemon" ## Stop daemon with killproc(8) and if this fails ## set echo the echo return value. - killproc -TERM /usr/sbin/sshd || return=$rc_failed + killproc -p $SSHD_PIDFILE -TERM /usr/sbin/sshd - echo -e "$return" + # Remember status and be verbose + rc_status -v ;; + try-restart) + ## Stop the service and if this succeeds (i.e. the + ## service was running before), start it again. + $0 status >/dev/null && $0 restart + + # Remember status and be quiet + rc_status + ;; restart) - ## If first returns OK call the second, if first or - ## second command fails, set echo return value. - $0 stop && $0 start || return=$rc_failed - ;; - reload) - ## Choose ONE of the following two cases: + ## Stop the service and regardless of whether it was + ## running or not, start it again. + $0 stop + $0 start - ## First possibility: A few services accepts a signal - ## to reread the (changed) configuration. + # Remember status and be quiet + rc_status + ;; + force-reload|reload) + ## Signal the daemon to reload its config. Most daemons + ## do this on signal 1 (SIGHUP). echo -n "Reload service sshd" - killproc -HUP /usr/sbin/sshd || return=$rc_failed - echo -e "$return" - ;; + + killproc -p $SSHD_PIDFILE -HUP /usr/sbin/sshd + + rc_status -v + + ;; status) - echo -n "Checking for service sshd" - ## Check status with checkproc(8), if process is running - ## checkproc will return with exit status 0. + echo -n "Checking for service sshd " + ## Check status with checkproc(8), if process is running + ## checkproc will return with exit status 0. - checkproc /usr/sbin/sshd && echo OK || echo No process + # Status has a slightly different for the status command: + # 0 - service running + # 1 - service dead, but /var/run/ pid file exists + # 2 - service dead, but /var/lock/ lock file exists + # 3 - service not running + + checkproc -p $SSHD_PIDFILE /usr/sbin/sshd + + rc_status -v ;; probe) ## Optional: Probe for the necessity of a reload, ## give out the argument which is required for a reload. - test /etc/ssh/sshd_config -nt /var/run/sshd.pid && echo reload + test /etc/ssh/sshd_config -nt $SSHD_PIDFILE && echo reload ;; *) - echo "Usage: $0 {start|stop|status|restart|reload[|probe]}" + echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}" exit 1 ;; esac - -# Inform the caller not only verbosely and set an exit status. -test "$return" = "$rc_done" || exit 1 -exit 0 +rc_exit -- cgit v1.2.3