我有一个python代码,它打开到远程服务器的SSH连接,以便进一步将telnet流量转发到隐藏在该服务器后面的几个路由器,以便远程管理这些路由器。代码如下:
def sshStart(self):
try:
self.sshServer = SSHTunnelForwarder(
(SRVR_IP, SRVR_PORT),
ssh_username = SRVR_USER[0],
ssh_password = SRVR_USER[1],
remote_bind_address = (self.systemIP, 23),
local_bind_address = ("127.0.0.1", self.localPort)
)
self.sshServer.start()
except:
fncPrintConsole(self.strConn + "Error SSH Tunnel")
self.quit()
def routerLogin(self):
try:
self.tn = telnetlib.Telnet("127.0.0.1",self.localPort)
except:
fncPrintConsole(self.strConn + "No route to host!")
self.quit()
这个很好用。事实上,我可以用这段代码轻松地管理几个路由器,前提是有网络连接到远端路由器。在
当远程路由器(换句话说,127.0.0.1:self.localPort -> self.systemIP, 23
的组合)由于某种原因(超时、没有可用的路由等)而无法访问时,就会出现问题。在
在这种情况下,我得到以下错误:
^{pr2}$即使错误是正确的(实际上远程路由器无法访问),我也无法捕捉到这个错误:python程序永远停留在那里,我无法正确地退出它(即:if error -> quit()
)
你知道如何完成这个任务吗?在
谢谢!在
卢卡斯
因此,捕获异常的问题在代码的后期阶段得到了解决。在
触发telnet连接后。。。在
。。。我真的希望在继续之前能得到一些线索。在
^{pr2}$出于某些原因,我认为在创建
tn
连接时包含try | except
就足够了。但是没有,我一直收到提到的SSH错误。在用
tn.expect
包装try|except
就达到了这个目的。所以现在我。。。在。。。在可及性问题的情况下,我可以在那里解决。在
不知道这是不是更优雅/正确的方法,但至少是有效的。。。在
谢谢!在
卢卡斯
相关问题 更多 >
编程相关推荐