J'ai un code python qui amène une connexion SSH au serveur distant pour rediriger le trafic telnet vers plusieurs routeurs cachés derrière ce serveur, afin de les gérer à distance. Le code est le suivant:Catch sshtunnel exception avec Python
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()
Cela fonctionne très bien. En effet, je peux facilement gérer plusieurs routeurs avec ce code, à condition qu'il y ait une mise en réseau vers le routeur distant. Le problème survient lorsque le routeur distant (en d'autres termes, la combinaison 127.0.0.1:self.localPort -> self.systemIP, 23
) n'est pas accessible à cause de quelque chose (timeout, pas de routage disponible, etc ...).
Dans ce cas, je reçois l'erreur suivante:
2017-07-24 10:38:57,409| ERROR | Could not establish connection from ('127.0.0.1', 50000) to remote side of the tunnel
2017-07-24 10:38:57,448| ERROR | Secsh channel 0 open FAILED: Network is unreachable: Connect failed
Même si l'erreur est correcte (il n'y a en fait pas joignabilité au routeur distant) Je ne peux pas attraper cette erreur: le programme python est bloqué là pour toujours et je ne peux pas le quitter correctement (par exemple: if error -> quit()
)
Avez-vous la moindre idée sur la façon d'accomplir cela?
Merci!
Lucas
J'ai le sentiment que le bit important du code est toujours porté disparu, car ceux-ci ne sont que 2 définitions de fonction dans laquelle des messages d'erreur réels indiqués, l'exception est jamais augmentée. – Uvar
Salut @Uvar: oui, en effet. Le code est long, c'est pourquoi je ne l'ai pas posté complet. Cependant, après avoir regardé le code à nouveau, j'ai trouvé l'erreur. Je l'afficherai comme une réponse. Merci! –