我正在尝试编写一个包装器Python脚本,它根据一些参数自动设置端口转发到远程主机,然后给我那个shell。一切都很好,直到我想退出shell - 此时,会话挂起,永远不会让我回到Python。这是一个做同样事情的玩具示例:
>>> import os
>>> os.system('ssh -L8080:localhost:80 fooserver.net')
user@fooserver.net password:
[fooserver.net]$ hostname
fooserver.net
[fooserver.net]$ exit
(hangs)
我认为这与转发的TCP端口在“TIME_WAIT”中有关,并且在关闭之前保持SSH会话处于活动状态,因为如果我从未在本地请求转发端口,则不会发生这种情况。处理这个问题的正确方法是什么?我可以从Python内部捕获“退出”然后杀死os.system()管道吗?