如何关闭通过Popen在Python中打开的ssh隧道
我需要创建一个SSH隧道,然后做一些事情,最后再关闭这个隧道。
我尝试这样做:
def runCmd(self,cmd):
args = shlex.split(cmd)
return subprocess.Popen(args)
def openTunnel
cmd = 'ssh -f -N -L 1313:localhost:1313 userid@server.com'
self.TunnelObj = self.runCmd(cmd)
这段代码创建了我的隧道。接下来,我可以进行我需要做的事情。现在我想关闭这个隧道。
def closeSocket(self):
print '\nClosing Tunnel\n'
if self.TunnelObj.returncode == None:
print '\nabout to kill\n'
self.TunnelObj.kill()
但是隧道仍然是打开的。SSH会话还在,端口也还在使用中。
我该怎么关闭这个隧道呢?