【问题标题】:How do I close an ssh Tunnel opened through Popen in python如何关闭在 python 中通过 Popen 打开的 ssh 隧道
【发布时间】:2011-09-12 00:17:46
【问题描述】:

我需要创建一个 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 会话仍然存在,并且端口仍然被分配。

如何关闭这条隧道?

【问题讨论】:

    标签: python popen ssh-tunnel


    【解决方案1】:

    部分问题在于隧道进程是 self.TunnelObj 的子进程。您可以尝试省略-f 标志,以便直接保持隧道进程。

    另一种选择是查看paramiko 库和this 问题。

    【讨论】:

    • 这正是我的问题。 -f(将隧道发送到后台)阻止 python 杀死进程。
    猜你喜欢
    • 2016-02-17
    • 2015-09-30
    • 2011-12-06
    • 2013-03-24
    • 2011-05-20
    • 2013-05-15
    • 1970-01-01
    • 2015-10-08
    • 2019-01-12
    相关资源
    最近更新 更多