我想通过ssh终止一个进程。 现在,当直接终止进程时,请参阅init中的注释行,该进程在远程主机上终止。 当然,我不想立即终止,而是终止所有远程进程。Python通过ssh终止一个进程
根据在subprocess.Popen选项“-t”,当我尝试一下例子结束在循环终止不同的结果显示:
如果“-t”是不集,过程是不是终止。
如果设置了'-t',过程终止,但我的终端隐藏任何输入,任何输入都会移动输入行。
现在,为什么没有'-t'选项,进程终止在循环?
serverThreads = []
serverscripts = []
serverscripts.append("script1")
serverscripts.append("script2")
class ServerCaller(threading.Thread):
def __init__(self, script):
threading.Thread.__init__(self)
self.script = script
self.ssh = subprocess.Popen(["ssh", '-t' , username + dataServer, self.script])
#if I terminate here without '-t' the process on the remote Host is terminated
#self.term()
def term(self):
self.ssh.terminate()
for ss in serverscripts:
serverThreads.append(ServerCaller(ss))
#if I terminate here without '-t' the process on the remote Host is NOT terminated
#if I terminate here with '-t' the process on the remote Host is terminated,
#but my terminal is screwed up
for t in serverThreads:
t.term()
使用面料或paramiko – e4c5
在我看来,这个问题是我对python缺乏了解,并不是说这是不可能的。终止一个子进程.Popen对我来说已经足够了,我只是想明白为什么同一个对象上完全相同的方法不会做同样的事情。 我已经看过paramiko,但它有问题,告诉我它没有找到我的调用可执行文件,但这是另一个问题 – Vuk
它不是Python,它是ssh。编写你自己的ssh接口就像写一个时间解释一样,它会变成flappy,而且有人已经做得更好,那么你可以做得更好。我认为你有它的工作,并有你的答案。 '-t'强制伪tty,这有点像屏幕。我认为可以在tty获得博士学位。 –