1#!/bin/bash
2#
3# Init file for OpenSSH server daemon
4#
5# chkconfig: 2345 55 25
6# description: OpenSSH server daemon
7#
8# processname: sshd
9# config: /etc/ssh/ssh_host_key
10# config: /etc/ssh/ssh_host_key.pub
11# config: /etc/ssh/ssh_random_seed
12# config: /etc/ssh/sshd_config
13# pidfile: /var/run/sshd.pid
14
15# source function library
16. /etc/rc.d/init.d/functions
17
18# pull in sysconfig settings
19[ -f /etc/sysconfig/sshd ] && . /etc/sysconfig/sshd
20
21RETVAL=0
22prog="sshd"
23
24# Some functions to make the below more readable
25SSHD=/usr/sbin/sshd
26PID_FILE=/var/run/sshd.pid
27
28do_restart_sanity_check()
29{
30	$SSHD -t
31	RETVAL=$?
32	if [ $RETVAL -ne 0 ]; then
33		failure $"Configuration file or keys are invalid"
34		echo
35	fi
36}
37
38start()
39{
40	# Create keys if necessary
41	/usr/bin/ssh-keygen -A
42	if [ -x /sbin/restorecon ]; then
43		/sbin/restorecon /etc/ssh/ssh_host_key.pub
44		/sbin/restorecon /etc/ssh/ssh_host_rsa_key.pub
45		/sbin/restorecon /etc/ssh/ssh_host_dsa_key.pub
46		/sbin/restorecon /etc/ssh/ssh_host_ecdsa_key.pub
47	fi
48
49	echo -n $"Starting $prog:"
50	$SSHD $OPTIONS && success || failure
51	RETVAL=$?
52	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/sshd
53	echo
54}
55
56stop()
57{
58	echo -n $"Stopping $prog:"
59	killproc $SSHD -TERM
60	RETVAL=$?
61	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/sshd
62	echo
63}
64
65reload()
66{
67	echo -n $"Reloading $prog:"
68	killproc $SSHD -HUP
69	RETVAL=$?
70	echo
71}
72
73case "$1" in
74	start)
75		start
76		;;
77	stop)
78		stop
79		;;
80	restart)
81		stop
82		start
83		;;
84	reload)
85		reload
86		;;
87	condrestart)
88		if [ -f /var/lock/subsys/sshd ] ; then
89			do_restart_sanity_check
90			if [ $RETVAL -eq 0 ] ; then
91				stop
92				# avoid race
93				sleep 3
94				start
95			fi
96		fi
97		;;
98	status)
99		status $SSHD
100		RETVAL=$?
101		;;
102	*)
103		echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}"
104		RETVAL=1
105esac
106exit $RETVAL
107