I want to run a process on a remote machine and I want it to get terminated when my host program exits.
I have a small test script which looks like this:
import time
while True:
print('hello')
time.sleep(1)
and I start this process on a remote machine via a script like this one:
import paramiko
ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('my_machine', username='root', key_filename='some_key')
_in, _out, _err = ssh.exec_command('python /home/me/loop.py')
time.sleep(5) # could do something with in/out/err
ssh.close()
But my problem is that the started process keeps running even after I've closed the Python process which started the SSH connection.
Is there a way to force closing the remote session and the remotely started process when the host process gets terminated?
Edit:
This question sounds similar but there is no satisfying answer. I tried to set the keepalive
but with no effect:
ssh.get_transport().set_keepalive(1)