diff options
Diffstat (limited to 'contrib/suse/rc.sshd')
-rw-r--r-- | contrib/suse/rc.sshd | 133 |
1 files changed, 93 insertions, 40 deletions
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 @@ | |||
1 | #! /bin/sh | 1 | #! /bin/sh |
2 | # Copyright (c) 1995-1998 SuSE GmbH Nuernberg, Germany. | 2 | # Copyright (c) 1995-2000 SuSE GmbH Nuernberg, Germany. |
3 | # | 3 | # |
4 | # Author: Chris Saia <csaia@wtower.com> | 4 | # Author: Jiri Smid <feedback@suse.de> |
5 | # | 5 | # |
6 | # /sbin/init.d/sshd | 6 | # /etc/init.d/sshd |
7 | # | 7 | # |
8 | # and symbolic its link | 8 | # and symbolic its link |
9 | # | 9 | # |
10 | # /sbin/rcsshd | 10 | # /usr/sbin/rcsshd |
11 | # | 11 | # |
12 | ### BEGIN INIT INFO | ||
13 | # Provides: sshd | ||
14 | # Required-Start: $network $remote_fs | ||
15 | # Required-Stop: $network $remote_fs | ||
16 | # Default-Start: 3 5 | ||
17 | # Default-Stop: 0 1 2 6 | ||
18 | # Description: Start the sshd daemon | ||
19 | ### END INIT INFO | ||
12 | 20 | ||
13 | . /etc/rc.config | 21 | SSHD_BIN=/usr/sbin/sshd |
22 | test -x $SSHD_BIN || exit 5 | ||
14 | 23 | ||
15 | # Determine the base and follow a runlevel link name. | 24 | SSHD_SYSCONFIG=/etc/sysconfig/ssh |
16 | base=${0##*/} | 25 | test -r $SSHD_SYSCONFIG || exit 6 |
17 | link=${base#*[SK][0-9][0-9]} | 26 | . $SSHD_SYSCONFIG |
18 | 27 | ||
19 | # Force execution if not called by a runlevel directory. | 28 | SSHD_PIDFILE=/var/run/sshd.init.pid |
20 | test $link = $base && START_SSHD=yes | 29 | |
21 | test "$START_SSHD" = yes || exit 0 | 30 | . /etc/rc.status |
31 | |||
32 | # Shell functions sourced from /etc/rc.status: | ||
33 | # rc_check check and set local and overall rc status | ||
34 | # rc_status check and set local and overall rc status | ||
35 | # rc_status -v ditto but be verbose in local rc status | ||
36 | # rc_status -v -r ditto and clear the local rc status | ||
37 | # rc_failed set local and overall rc status to failed | ||
38 | # rc_reset clear local rc status (overall remains) | ||
39 | # rc_exit exit appropriate to overall rc status | ||
40 | |||
41 | # First reset status of this service | ||
42 | rc_reset | ||
22 | 43 | ||
23 | # The echo return value for success (defined in /etc/rc.config). | ||
24 | return=$rc_done | ||
25 | case "$1" in | 44 | case "$1" in |
26 | start) | 45 | start) |
27 | echo -n "Starting service sshd" | 46 | if ! test -f /etc/ssh/ssh_host_key ; then |
47 | echo Generating /etc/ssh/ssh_host_key. | ||
48 | ssh-keygen -t rsa1 -b 1024 -f /etc/ssh/ssh_host_key -N '' | ||
49 | fi | ||
50 | if ! test -f /etc/ssh/ssh_host_dsa_key ; then | ||
51 | echo Generating /etc/ssh/ssh_host_dsa_key. | ||
52 | |||
53 | ssh-keygen -t dsa -b 1024 -f /etc/ssh/ssh_host_dsa_key -N '' | ||
54 | fi | ||
55 | if ! test -f /etc/ssh/ssh_host_rsa_key ; then | ||
56 | echo Generating /etc/ssh/ssh_host_rsa_key. | ||
57 | |||
58 | ssh-keygen -t rsa -b 1024 -f /etc/ssh/ssh_host_rsa_key -N '' | ||
59 | fi | ||
60 | echo -n "Starting SSH daemon" | ||
28 | ## Start daemon with startproc(8). If this fails | 61 | ## Start daemon with startproc(8). If this fails |
29 | ## the echo return value is set appropriate. | 62 | ## the echo return value is set appropriate. |
30 | 63 | ||
31 | startproc /usr/sbin/sshd || return=$rc_failed | 64 | startproc -f -p $SSHD_PIDFILE /usr/sbin/sshd $SSHD_OPTS -o "PidFile=$SSHD_PIDFILE" |
32 | 65 | ||
33 | echo -e "$return" | 66 | # Remember status and be verbose |
67 | rc_status -v | ||
34 | ;; | 68 | ;; |
35 | stop) | 69 | stop) |
36 | echo -n "Stopping service sshd" | 70 | echo -n "Shutting down SSH daemon" |
37 | ## Stop daemon with killproc(8) and if this fails | 71 | ## Stop daemon with killproc(8) and if this fails |
38 | ## set echo the echo return value. | 72 | ## set echo the echo return value. |
39 | 73 | ||
40 | killproc -TERM /usr/sbin/sshd || return=$rc_failed | 74 | killproc -p $SSHD_PIDFILE -TERM /usr/sbin/sshd |
41 | 75 | ||
42 | echo -e "$return" | 76 | # Remember status and be verbose |
77 | rc_status -v | ||
43 | ;; | 78 | ;; |
79 | try-restart) | ||
80 | ## Stop the service and if this succeeds (i.e. the | ||
81 | ## service was running before), start it again. | ||
82 | $0 status >/dev/null && $0 restart | ||
83 | |||
84 | # Remember status and be quiet | ||
85 | rc_status | ||
86 | ;; | ||
44 | restart) | 87 | restart) |
45 | ## If first returns OK call the second, if first or | 88 | ## Stop the service and regardless of whether it was |
46 | ## second command fails, set echo return value. | 89 | ## running or not, start it again. |
47 | $0 stop && $0 start || return=$rc_failed | 90 | $0 stop |
48 | ;; | 91 | $0 start |
49 | reload) | ||
50 | ## Choose ONE of the following two cases: | ||
51 | 92 | ||
52 | ## First possibility: A few services accepts a signal | 93 | # Remember status and be quiet |
53 | ## to reread the (changed) configuration. | 94 | rc_status |
95 | ;; | ||
96 | force-reload|reload) | ||
97 | ## Signal the daemon to reload its config. Most daemons | ||
98 | ## do this on signal 1 (SIGHUP). | ||
54 | 99 | ||
55 | echo -n "Reload service sshd" | 100 | echo -n "Reload service sshd" |
56 | killproc -HUP /usr/sbin/sshd || return=$rc_failed | 101 | |
57 | echo -e "$return" | 102 | killproc -p $SSHD_PIDFILE -HUP /usr/sbin/sshd |
58 | ;; | 103 | |
104 | rc_status -v | ||
105 | |||
106 | ;; | ||
59 | status) | 107 | status) |
60 | echo -n "Checking for service sshd" | 108 | echo -n "Checking for service sshd " |
61 | ## Check status with checkproc(8), if process is running | 109 | ## Check status with checkproc(8), if process is running |
62 | ## checkproc will return with exit status 0. | 110 | ## checkproc will return with exit status 0. |
63 | 111 | ||
64 | checkproc /usr/sbin/sshd && echo OK || echo No process | 112 | # Status has a slightly different for the status command: |
113 | # 0 - service running | ||
114 | # 1 - service dead, but /var/run/ pid file exists | ||
115 | # 2 - service dead, but /var/lock/ lock file exists | ||
116 | # 3 - service not running | ||
117 | |||
118 | checkproc -p $SSHD_PIDFILE /usr/sbin/sshd | ||
119 | |||
120 | rc_status -v | ||
65 | ;; | 121 | ;; |
66 | probe) | 122 | probe) |
67 | ## Optional: Probe for the necessity of a reload, | 123 | ## Optional: Probe for the necessity of a reload, |
68 | ## give out the argument which is required for a reload. | 124 | ## give out the argument which is required for a reload. |
69 | 125 | ||
70 | test /etc/ssh/sshd_config -nt /var/run/sshd.pid && echo reload | 126 | test /etc/ssh/sshd_config -nt $SSHD_PIDFILE && echo reload |
71 | ;; | 127 | ;; |
72 | *) | 128 | *) |
73 | echo "Usage: $0 {start|stop|status|restart|reload[|probe]}" | 129 | echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}" |
74 | exit 1 | 130 | exit 1 |
75 | ;; | 131 | ;; |
76 | esac | 132 | esac |
77 | 133 | rc_exit | |
78 | # Inform the caller not only verbosely and set an exit status. | ||
79 | test "$return" = "$rc_done" || exit 1 | ||
80 | exit 0 | ||