#! /bin/bash # # $Id: sshd.init,v 1.4 2003/11/21 12:48:57 djm Exp $ # ### BEGIN INIT INFO # Provides: # Required-Start: $network # Required-Stop: # Default-Start: 3 4 5 # Default-Stop: 0 1 2 6 # Description: sshd # Bring up/down the OpenSSH secure shell daemon. ### END INIT INFO # # Written by Miquel van Smoorenburg . # Modified for Debian GNU/Linux by Ian Murdock . # Modified for OpenLinux by Raymund Will NAME=sshd DAEMON=/usr/sbin/$NAME # Hack-Alert(TM)! This is necessary to get around the 'reload'-problem # created by recent OpenSSH daemon/ssd combinations. See Caldera internal # PR [linux/8278] for details... PIDF=/var/run/$NAME.pid NAME=$DAEMON _status() { [ -z "$1" ] || local pidf="$1" local ret=-1 local pid if [ -n "$pidf" ] && [ -r "$pidf" ]; then pid=$(head -1 $pidf) else pid=$(pidof $NAME) fi if [ ! -e $SVIlock ]; then # no lock-file => not started == stopped? ret=3 elif [ -n "$pidf" -a ! -f "$pidf" ] || [ -z "$pid" ]; then # pid-file given but not present or no pid => died, but was not stopped ret=2 elif [ -r /proc/$pid/cmdline ] && echo -ne $NAME'\000' | cmp -s - /proc/$pid/cmdline; then # pid-file given and present or pid found => check process... # but don't compare exe, as this will fail after an update! # compares OK => all's well, that ends well... ret=0 else # no such process or exe does not match => stale pid-file or process died # just recently... ret=1 fi return $ret } # Source function library (and set vital variables). . @SVIdir@/functions case "$1" in start) [ ! -e $SVIlock ] || exit 0 [ -x $DAEMON ] || exit 5 SVIemptyConfig @sysconfdir@/sshd_config && exit 6 if [ ! \( -f @sysconfdir@/ssh_host_key -a \ -f @sysconfdir@/ssh_host_key.pub \) -a \ ! \( -f @sysconfdir@/ssh_host_rsa_key -a \ -f @sysconfdir@/ssh_host_rsa_key.pub \) -a \ ! \( -f @sysconfdir@/ssh_host_dsa_key -a \ -f @sysconfdir@/ssh_host_dsa_key.pub \) ]; then echo "$SVIsubsys: host key not initialized: skipped!" echo "$SVIsubsys: use ssh-host-keygen to generate one!" exit 6 fi echo -n "Starting $SVIsubsys services: " ssd -S -x $DAEMON -n $NAME -- $OPTIONS ret=$? echo "." touch $SVIlock ;; stop) [ -e $SVIlock ] || exit 0 echo -n "Stopping $SVIsubsys services: " ssd -K -p $PIDF -n $NAME ret=$? echo "." rm -f $SVIlock ;; force-reload|reload) [ -e $SVIlock ] || exit 0 echo "Reloading $SVIsubsys configuration files: " ssd -K --signal 1 -q -p $PIDF -n $NAME ret=$? echo "done." ;; restart) $0 stop $0 start ret=$? ;; status) _status $PIDF ret=$? ;; *) echo "Usage: $SVIscript {[re]start|stop|[force-]reload|status}" ret=2 ;; esac exit $ret