1

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セッションはまだ存在し、ポートはまだ割り当てられています。

このトンネルをシャットダウンするにはどうすればよいですか?

4

1 に答える 1

2

問題の一部は、トンネルプロセスがself.TunnelObjのサブプロセスであるということです。-fフラグを省略して、トンネルプロセスを直接保持することができます。

もう1つのオプションは、paramikoライブラリとこの質問を確認することです。

于 2011-06-09T21:38:25.340 に答える