1 #! /bin/bash 2 # 3 # $Id: sshd.init,v 1.4 2003/11/21 12:48:57 djm Exp $ 4 # 5 ### BEGIN INIT INFO 6 # Provides: 7 # Required-Start: $network 8 # Required-Stop: 9 # Default-Start: 3 4 5 10 # Default-Stop: 0 1 2 6 11 # Description: sshd 12 # Bring up/down the OpenSSH secure shell daemon. 13 ### END INIT INFO 14 # 15 # Written by Miquel van Smoorenburg <miquels (at] drinkel.ow.org>. 16 # Modified for Debian GNU/Linux by Ian Murdock <imurdock (at] gnu.ai.mit.edu>. 17 # Modified for OpenLinux by Raymund Will <ray (at] caldera.de> 18 19 NAME=sshd 20 DAEMON=/usr/sbin/$NAME 21 # Hack-Alert(TM)! This is necessary to get around the 'reload'-problem 22 # created by recent OpenSSH daemon/ssd combinations. See Caldera internal 23 # PR [linux/8278] for details... 24 PIDF=/var/run/$NAME.pid 25 NAME=$DAEMON 26 27 _status() { 28 [ -z "$1" ] || local pidf="$1" 29 local ret=-1 30 local pid 31 if [ -n "$pidf" ] && [ -r "$pidf" ]; then 32 pid=$(head -1 $pidf) 33 else 34 pid=$(pidof $NAME) 35 fi 36 37 if [ ! -e $SVIlock ]; then 38 # no lock-file => not started == stopped? 39 ret=3 40 elif [ -n "$pidf" -a ! -f "$pidf" ] || [ -z "$pid" ]; then 41 # pid-file given but not present or no pid => died, but was not stopped 42 ret=2 43 elif [ -r /proc/$pid/cmdline ] && 44 echo -ne $NAME'\000' | cmp -s - /proc/$pid/cmdline; then 45 # pid-file given and present or pid found => check process... 46 # but don't compare exe, as this will fail after an update! 47 # compares OK => all's well, that ends well... 48 ret=0 49 else 50 # no such process or exe does not match => stale pid-file or process died 51 # just recently... 52 ret=1 53 fi 54 return $ret 55 } 56 57 # Source function library (and set vital variables). 58 . @SVIdir@/functions 59 60 case "$1" in 61 start) 62 [ ! -e $SVIlock ] || exit 0 63 [ -x $DAEMON ] || exit 5 64 SVIemptyConfig @sysconfdir@/sshd_config && exit 6 65 66 if [ ! \( -f @sysconfdir@/ssh_host_key -a \ 67 -f @sysconfdir@/ssh_host_key.pub \) -a \ 68 ! \( -f @sysconfdir@/ssh_host_rsa_key -a \ 69 -f @sysconfdir@/ssh_host_rsa_key.pub \) -a \ 70 ! \( -f @sysconfdir@/ssh_host_dsa_key -a \ 71 -f @sysconfdir@/ssh_host_dsa_key.pub \) ]; then 72 73 echo "$SVIsubsys: host key not initialized: skipped!" 74 echo "$SVIsubsys: use ssh-host-keygen to generate one!" 75 exit 6 76 fi 77 78 echo -n "Starting $SVIsubsys services: " 79 ssd -S -x $DAEMON -n $NAME -- $OPTIONS 80 ret=$? 81 82 echo "." 83 touch $SVIlock 84 ;; 85 86 stop) 87 [ -e $SVIlock ] || exit 0 88 89 echo -n "Stopping $SVIsubsys services: " 90 ssd -K -p $PIDF -n $NAME 91 ret=$? 92 93 echo "." 94 rm -f $SVIlock 95 ;; 96 97 force-reload|reload) 98 [ -e $SVIlock ] || exit 0 99 100 echo "Reloading $SVIsubsys configuration files: " 101 ssd -K --signal 1 -q -p $PIDF -n $NAME 102 ret=$? 103 echo "done." 104 ;; 105 106 restart) 107 $0 stop 108 $0 start 109 ret=$? 110 ;; 111 112 status) 113 _status $PIDF 114 ret=$? 115 ;; 116 117 *) 118 echo "Usage: $SVIscript {[re]start|stop|[force-]reload|status}" 119 ret=2 120 ;; 121 122 esac 123 124 exit $ret 125 126