Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Unwanted SSH child survives after ssh session

by cmv (Chaplain)
on Aug 11, 2009 at 20:03 UTC ( #787748=perlquestion: print w/ replies, xml ) Need Help??
cmv has asked for the wisdom of the Perl Monks concerning the following question:

Perlmonks-

Running the following ssh command locally:

ssh user@host tail -f /etc/passwd

Results in the following 2 processes on the far end machine (note PGID & SID):

UID PID PPID PGID SID CMD root 22409 4763 4763 4763 sshd -f /etc/ssh/sshd_config -R user 22411 22409 22411 22411 tail -f /etc/passwd

As expected, when I ctrl-c out of the ssh command on the originating local computer, I loose the sshd_config process at the far end, but the tail -f child process survives and looks like this:

UID PID PPID PGID SID CMD user 22411 1 22411 22411 tail -f /etc/passwd

I would like for the child process to die when I ctrl-c out of the ssh command. How can I do this?

Put another way, how can I get the child process (tail -f) to be in the same process group as the parent (sshd_config)?

My first thought was to use perl's setpgrp command: setpgrp(PID, PGRP) where:

PID - Child's process ID PGRP - Parents process group

However, this seems to always fail on SunOS. Probably because of what is described in the setpgrp camel book description:

Sets the current process group for the specified PID, 0 for the current process. Will produce a fatal error if used on a machine that doesn't implement POSIX setpgid(2) or BSD setpgrp(2). If the arguments are omitted, it defaults to 0,0 . Note that the BSD 4.2 version of setpgrp does not accept any arguments, so only setpgrp(0,0) is portable. See also POSIX::setsid() .

Any help is appreciated.

Thanks!

-Craig

Comment on Unwanted SSH child survives after ssh session
Select or Download Code
Re: Unwanted SSH child survives after ssh session
by almut (Canon) on Aug 11, 2009 at 21:05 UTC

    I think this is an ssh issue... Try  ssh -t user@host tail -f /etc/passwd

      almut++ That was it. The -t option works great! Thanks.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://787748]
Approved by planetscape
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (7)
As of 2014-12-27 07:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (176 votes), past polls