[Bug 253] New: Patch to write process ID to a file when ssh sets itself into daemon mode
bugzilla-daemon at mindrot.org
bugzilla-daemon at mindrot.org
Tue May 21 05:01:57 EST 2002
http://bugzilla.mindrot.org/show_bug.cgi?id=253
Summary: Patch to write process ID to a file when ssh sets itself
into daemon mode
Product: Portable OpenSSH
Version: -current
Platform: ix86
URL: http://evan.prodromou.san-francisco.ca.us/openssh-
3.2.2p1.withpid.diff
OS/Version: Linux
Status: NEW
Severity: enhancement
Priority: P2
Component: ssh
AssignedTo: openssh-unix-dev at mindrot.org
ReportedBy: evan at prodromou.san-francisco.ca.us
I find it necessary on occasion to write scripts that set up an ssh tunnel, do
some commands using that tunnel, and then tear down the tunnel. Tunnelling POP3
connections with fetchmail is a good example:
ssh -f -N -L 10110:mailhost:110 mailhost
fetchmail localhost
[tear down tunnel]
The -f option here is key, because you want to be sure that the tunnel is set up
before running fetchmail.
However, it's difficult to tear down the tunnel, since it's hard to find out
what the backgrounded ssh process's PID is. I've written a patch to allow a
command-line option, "-d pidfile", which writes the process ID of the fork()'d
child to a file, so the script can then just kill `cat pidfile`.
In order to do this, I had to unfold the calls to daemon() in ssh.c to actually
do the fork(), exit() and setsid() manually, since we want to be sure that the
pidfile exists before the parent exits, to avoid races. This works fine on
Linux, but I'm unsure if daemon() does any other fancy things on other operating
systems.
I'm also not sure what the proper behavior of the parent should be if it can't
write the pidfile. Currently, it does _not_ kill the child, although this might
be the Right Thing.
I also changed the manual page to include mention of the -d option.
The patch should apply cleanly by changing to the source directory and running:
patch -Np1 < /path/to/openssh-3.2.2p1.withpid.diff
I hope this is useful to someone else besides me.
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
More information about the openssh-unix-dev
mailing list