| #! /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 <miquels@drinkel.ow.org>. |
| # Modified for Debian GNU/Linux by Ian Murdock <imurdock@gnu.ai.mit.edu>. |
| # Modified for OpenLinux by Raymund Will <ray@caldera.de> |
| |
| 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 |
| |