summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorRobert Schwebel <r.schwebel@pengutronix.de>2008-04-10 19:24:11 +0000
committerRobert Schwebel <r.schwebel@pengutronix.de>2008-04-10 19:24:11 +0000
commitd8b708fddd41189e10a1a1197f631b25793b424e (patch)
tree336de5dd8d9eee0695b648914dc19dc97702eddc /generic
parent6b02977e063a867a5f89ae6a224db2563572479d (diff)
downloadptxdist-d8b708fddd41189e10a1a1197f631b25793b424e.tar.gz
ptxdist-d8b708fddd41189e10a1a1197f631b25793b424e.tar.xz
* openssh: updated startup script
git-svn-id: https://svn.pengutronix.de/svn/ptxdist/trunks/ptxdist-trunk@7930 33e552b5-05e3-0310-8538-816dae2090ed
Diffstat (limited to 'generic')
-rwxr-xr-xgeneric/etc/init.d/openssh136
1 files changed, 94 insertions, 42 deletions
diff --git a/generic/etc/init.d/openssh b/generic/etc/init.d/openssh
index c40949c94..96ab76773 100755
--- a/generic/etc/init.d/openssh
+++ b/generic/etc/init.d/openssh
@@ -1,61 +1,113 @@
#!/bin/sh
#
+# /etc/init.d/openssh
+#
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/sshd
NAME=sshd
-DESC="openssh server"
PIDFILE=/var/run/sshd.pid
-set -e
OPENSSH_RSAKEY_DEFAULT=/etc/ssh/ssh_host_rsa_key
OPENSSH_DSAKEY_DEFAULT=/etc/ssh/ssh_host_dsa_key
test -n "$OPENSSH_RSAKEY" || \
- OPENSSH_RSAKEY=$OPENSSH_RSAKEY_DEFAULT
+ OPENSSH_RSAKEY=$OPENSSH_RSAKEY_DEFAULT
test -n "$OPENSSH_DSAKEY" || \
- OPENSSH_DSAKEY=$OPENSSH_DSAKEY_DEFAULT
-test -n "$OPENSSH_KEYTYPES" || \
- OPENSSH_KEYTYPES="rsa dsa"
-
-gen_keys() {
-for t in $OPENSSH_KEYTYPES; do
- case $t in
- rsa)
- test -f $OPENSSH_RSAKEY || ssh-keygen -t rsa -f $OPENSSH_RSAKEY -N ""
- ;;
- dsa)
- test -f $OPENSSH_DSAKEY || ssh-keygen -t dsa -f $OPENSSH_DSAKEY -N ""
- ;;
- esac
-done
+ OPENSSH_DSAKEY=$OPENSSH_DSAKEY_DEFAULT
+
+gen_key() {
+
+ key_type=$1
+ key_file=$2
+ root_was_ro=
+
+ touch $key_file > /dev/null 2>&1
+ if [ "$?" -ne "0" ]; then
+ root_was_ro=1
+ echo -n "remounting root rw..."
+ mount / -o remount,rw > /dev/null 2>&1
+ if [ "$?" -ne "0" ]; then
+ echo "failed, aborting"
+ exit 1
+ fi
+ echo "done"
+ fi
+ echo -n "generating $key_type key..."
+ ssh-keygen -t $key_type -f $key_file -N "" > /dev/null 2>&1
+ if [ "$?" = "0" ]; then
+ echo "done"
+ else
+ echo "failed"
+ exit 1
+ fi
+ if [ -n "$root_was_ro" ]; then
+ echo -n "remounting root ro..."
+ mount / -o remount,ro > /dev/null 2>&1
+ if [ "$?" = "0" ]; then
+ echo "done"
+ else
+ echo "failed"
+ exit 1
+ fi
+ fi
}
+
case "$1" in
- start)
- mkdir -p /var/run/sshd
- echo -n "Starting $DESC: "
- gen_keys
- start-stop-daemon -S -x "$DAEMON" -p $PIDFILE
- echo "$NAME."
- ;;
- stop)
- echo -n "Stopping $DESC: "
- start-stop-daemon -K -p $PIDFILE
- echo "$NAME."
- ;;
- restart|force-reload)
- echo -n "Restarting $DESC: "
- start-stop-daemon -K -x "$DAEMON" -p $PIDFILE
- sleep 1
- start-stop-daemon -S -x "$DAEMON" -p $PIDFILE
- echo "$NAME."
- ;;
- *)
- N=/etc/init.d/$NAME
- echo "Usage: $N {start|stop|restart|force-reload}" >&2
- exit 1
- ;;
+
+ start)
+ mkdir -p /var/run/sshd
+
+ # create keys if necessary
+ [ \! -f "$OPENSSH_RSAKEY" ] && gen_key rsa "$OPENSSH_RSAKEY"
+ [ \! -f "$OPENSSH_DSAKEY" ] && gen_key dsa "$OPENSSH_DSAKEY"
+
+ echo -n "starting sshd..."
+ start-stop-daemon -S -x "$DAEMON" -p "$PIDFILE" > /dev/null 2>&1
+ if [ "$?" = "0" ]; then
+ echo "done"
+ else
+ echo "failed"
+ exit 1
+ fi
+ ;;
+
+ stop)
+ echo -n "stopping sshd..."
+ start-stop-daemon -K -p $PIDFILE > /dev/null 2>&1
+ if [ "$?" = "0" ]; then
+ echo "done"
+ else
+ echo "failed"
+ exit 1
+ fi
+ ;;
+
+ restart|force-reload)
+ echo -n "restarting sshd..."
+ start-stop-daemon -K -x "$DAEMON" -p $PIDFILE > /dev/null 2>&1
+ if [ "$?" = "0" ]; then
+ echo "done"
+ else
+ echo "failed"
+ exit 1
+ fi
+ sleep 1
+ start-stop-daemon -S -x "$DAEMON" -p $PIDFILE > /dev/null 2>&1
+ if [ "$?" = "0" ]; then
+ echo "done"
+ else
+ echo "failed"
+ exit 1
+ fi
+ ;;
+
+ *)
+ echo "Usage: $0 {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
esac
exit 0
+