make autossh fork properly

This commit is contained in:
Antoine Beaupré 2015-06-18 16:43:17 -04:00
parent 50685a8bc7
commit 7b99c89edf
2 changed files with 11 additions and 7 deletions

View file

@ -19,13 +19,16 @@ DESC="autossh"
NAME=autossh
USER=$NAME
DAEMON=/usr/bin/autossh
DAEMON_ARGS=""
DAEMON_ARGS="-f"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
AUTOSSH_PIDFILE=$PIDFILE
export AUTOSSH_PIDFILE
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
@ -46,9 +49,9 @@ do_start()
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --quiet --background --user $USER --pidfile $PIDFILE --makepidfile --exec $DAEMON --test > /dev/null \
start-stop-daemon --start --quiet --user $USER --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --quiet --background --user $USER --chuid $USER --pidfile $PIDFILE --makepidfile --exec $DAEMON -- \
start-stop-daemon --start --quiet --user $USER --chuid $USER --pidfile $PIDFILE --exec $DAEMON -- \
$DAEMON_ARGS \
|| return 2
# The above code will not work for interpreted scripts, use the next

View file

@ -1,7 +1,8 @@
class sshd::autossh($host,
$port = undef, # this should be a remote->local hash
$remote_user = undef,
$user = 'root',
$port = undef, # this should be a remote->local hash
$remote_user = undef,
$user = 'root',
$pidfile = '/var/run/autossh.pid',
) {
if $port {
$port_ensure = $port
@ -22,7 +23,7 @@ class sshd::autossh($host,
source => 'puppet:///modules/sshd/autossh.init.d';
'/etc/default/autossh':
mode => '0444',
content => "USER=$user\nDAEMON_ARGS='-o ServerAliveInterval=15 -o ServerAliveCountMax=4 -q -N -R $port_ensure:localhost:22 $remote_user_ensure@$host'\n";
content => "USER=$user\nPIDFILE=$pidfile\nDAEMON_ARGS='-f -o ServerAliveInterval=15 -o ServerAliveCountMax=4 -q -N -R $port_ensure:localhost:22 $remote_user_ensure@$host'\n";
}
package { 'autossh':
ensure => present,