如何正确地退出通过Python启动的转发端口的交互式SSH会话?

2024-10-04 05:19:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个包装器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\u WAIT”状态并保持SSH会话活动直到它关闭有关,因为如果我从未在本地请求该转发端口,则不会发生这种情况。处理这个问题的正确方法是什么?我能从Python内部捕获“出口”并杀死操作系统()管子什么的?你知道吗


Tags: 端口import脚本参数net远程osshell