Sending Signal to remote process
Mamfelt
michael at felt.demon.nl
Wed Jan 24 02:59:45 AEDT 2018
Perhaps a multi-step process. How about...
After you have PID of the ssh session, run a second query looking for the PID of processes that have PPID equals the remote ssh PID just found.
Sent from my iPhone
> On 23 Jan 2018, at 15:33, Peter Stuge <peter at stuge.se> wrote:
>
> Thomas Güttler wrote:
>> Example:
>> ssh root at localhost /root/print-signal.py
>>
>> Get PID of ssh:
>> ps aux| grep print-signal
>>
>> Kill the matching ssh process:
>> kill pid-of-ssh
>>
>> Unfortunately only the ssh process itself gets the signal, not the
>> remote command (print-signal.py). The remote command does not
>> terminate :-(
>>
>> How can I make ssh "forward" the SIGTERM signal to the remote command?
>>
>> See https://stackoverflow.com/questions/48377993/forwards-sigterm-over-ssh
>>
>> According to this[1] answer, openssh does not implement this.
>
> Correct, that channel message is currently not supported by OpenSSH.
>
>
>> It would be realy great if openssh could forward the signal to the
>> remote-command.
>
> Yes and no.
>
> I agree that sending signals to remote processes (channels, actually)
> can be very useful.
>
> But I absolutely do not want to lose the ability to send signals to
> the ssh client itself on the system where it is running.
>
> So "remote signals" need to be separate from local signals - meaning
> that they probably need some other interface than kill().
>
> This gets complicated. How do you know which channel to send the
> signal to? One ssh process can have many open channels.
>
> So whatever interface is used would possibly also have to allow
> enumerating open channels, but obviously only for the respectiveuser.
>
> How to accomplish that in a portable manner? Maybe a AF_UNIX socket
> with a custom protocol?
>
> I don't think there exists any development for such an interface, and
> it's not a trivial thing.
>
>
> Meanwhile, what you can do is make /root/print-signal.py on the
> output its own pid to stdout which you save in your software/script
> on the client side, and open a second channel (e.g. using multiplexing):
>
> ssh root at localhost 'kill -TERM insert_pid_here'
>
> which sends the signal.
>
> This expands on the second point in the stackoverflow answer.
>
>
> //Peter
>
> _______________________________________________
> openssh-unix-dev mailing list
> openssh-unix-dev at mindrot.org
> https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev
>
More information about the openssh-unix-dev
mailing list