From 8ccce38ec3ba5f71cc822f4a10b9273f04a845cd Mon Sep 17 00:00:00 2001 From: pawelz Date: Tue, 19 May 2009 10:14:48 +0000 Subject: [PATCH] - init script for autossh Changed files: autossh.init -> 1.1 --- autossh.init | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 autossh.init diff --git a/autossh.init b/autossh.init new file mode 100644 index 0000000..b7a44cc --- /dev/null +++ b/autossh.init @@ -0,0 +1,127 @@ +#!/bin/sh +# +# autossh ssh sessions manager +# +# chkconfig: 345 82 18 +# +# description: ssh sessions manager +# +# processname: autossh +# config: /etc/sysconfig/autossh +# pidfile: +# +# $Id$ + +# Source function library +. /etc/rc.d/init.d/functions + +# Get network config +. /etc/sysconfig/network + +# Set defaults +AUTOSSH_PORT=0 # connection monitoring port. 0 turns the monitoring function off. +AUTOSSH_LOGLEVEL=7 + +# Get service config - may override defaults +[ -f /etc/sysconfig/autossh ] && . /etc/sysconfig/autossh + +export AUTOSSH_LOGLEVEL + +# Check that networking is up. +if is_yes "${NETWORKING}"; then + if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then + msg_network_down autossh + exit 1 + fi +else + exit 0 +fi + +start() { + # Check if the service is already running? + if [ -f /var/lock/subsys/autossh ]; then + msg_already_running autossh + return + fi + + # Parse autossh.tab file + # /^[^#$]/ - removes comments, i.e. lines begining with '#' and empty lines. + for I in $(awk -vFS=';' '/^[^#$]/ {print $1}' /etc/autossh.tab); do + msg_starting "autossh $I" + AUTOSSH_PIDFILE=/var/run/autossh/$I.pid $(awk -vFS=';' "-vport=$AUTOSSH_PORT" "/^$I;/ "'{printf("daemon autossh -M%s -fN %s\n", port, $2)}' /etc/autossh.tab) + done + + # XXX How to detect errors? + touch /var/lock/subsys/autossh +} + +stop() { + if [ ! -f /var/lock/subsys/autossh ]; then + msg_not_running autossh + return + fi + + # Stop daemons. + for I in /var/run/autossh/*.pid; do + msg_stopping "autossh session $(basename $I)" + killproc --pidfile $I autossh -TERM + done + rm -f /var/lock/subsys/autossh +} + +reload() { + if [ ! -f /var/lock/subsys/autossh ]; then + msg_not_running autossh + RETVAL=7 + return + fi + + msg_reloading autossh + for I in /var/run/autossh/*.pid; do + killproc --pidfile $I autossh -USR1 + done + # XXX How to detect errors? + # RETVAL=$? + RETVAL=0 +} + +condrestart() { + if [ ! -f /var/lock/subsys/autossh ]; then + msg_not_running autossh + RETVAL=$1 + return + fi + + stop + start +} + +RETVAL=0 +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + try-restart) + condrestart 0 + ;; + reload|force-reload) + reload + ;; + status) + status autossh + RETVAL=$? + ;; + *) + msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|status}" + exit 3 +esac + +exit $RETVAL -- 2.44.0