ssh tunnel as a daemon

Patrick Nelson pnelson at neatech.com
Sat Jun 12 18:47:44 UTC 2004


FC2 Uptodate

I'm trying to figure out how to daemon'ize a script that I have to start
an ssh port forwading tunnel.  Here is how I'm doing it:

the script (name is sshtun):
---snip---
while [ true ]; do
 ssh -nN2g -c $Crypt $LPort:$LHost $RUser@$RHost -L $RPort:$LHost:$LPort
done
---snip---

the init script (sshtund):
---snip---
daemon $ProgramFull
....
killproc $ProgramFull
---snip---

The problem:
When I call service sshtund start, the ssh process does go to the
background and sshtund never exits.

So I tried this with the init:
---snip---
$ProgramFull &
....
killproc $ProgramFull
---snip---

but then service sshtund stop doest work.  So I changed the stop section
of the init to:

---snip---
$ProgramFull &
....
killall -qgs 9 $ProgramName
---snip---

where ProgramName is sshtun.  And this works but all further processing
of the init script (everything that follows the killall) doesn't get
done and the init script returns.

So, it appears that the ssh is holding the init script and tie'ing it to
the ssh command but I can not seem to separate the init script from the
program it calls (not sure if it is  possible).  OK thats cool, So I can
give the ssh command (in the script sshtun) the -f option to put ssh in
the background.  But I have to get rid of the while-do-done which
creates my real problem.  So, my question is:

Is there a best practice on scripting a process to make sure a
background process is running?  Or when a background process drops off
it triggers an event that would attempt to start it up again?  Any ideas
would help.





More information about the fedora-list mailing list