#1 Le 04/07/2016, à 18:49
- totola
python fabric try except et SSHException
Bonjour,
j'ai une fonction qui se connecte sur des postes distants avec le module fabric de python et qui exécute en continu des instructions, le code ressemble à ça:
while(True):
for x in range(..):
connecter(x) #la fonction qui utilise fabric pour se connecter sur le poste x
run('....') #mes instructions ici
Alors ça fonctionne très bien sur une dizaine de postes sans soucis, le seul problème c'est si par exemple un poste s'éteint l'ensemble de la fonction plante avec une erreur:
raise SSHException: SSH session not active
J'aimerai bien que cette erreur soit juste ignorée mais je ne sais pas comment faire. En cherchant un peu j'ai l'impression que try puis except pourrait peut-être fonctionner?
Merci
Hors ligne
#2 Le 04/07/2016, à 19:13
- pingouinux
Re : python fabric try except et SSHException
Bonjour,
Quelque chose comme ceci devrait faire l'affaire :
while(True):
for x in range(..):
try: connecter(x) #la fonction qui utilise fabric pour se connecter sur le poste x
except SSHException: pass
run('....') #mes instructions ici
Hors ligne
#3 Le 04/07/2016, à 19:18
- totola
Re : python fabric try except et SSHException
Merci de la réactivité pingouinux!
En effet c'est un truc comme ça que j'imaginais, mais comme je ne pourrai tester que demain et pas pendant longtemps, je préfère être sûr de la syntaxe...
Merci encore
Hors ligne
#4 Le 05/07/2016, à 14:44
- totola
Re : python fabric try except et SSHException
Hum.. je n'arrive pas.. ça me fait la même erreur et ça ne règle pas le problème.
Je ne devrais pas plutôt faire quelque chose comme ça?
while(True):
for x in range(..):
try:
connecter(x)
run('....')
except SSHException: pass
Et là j'ai une erreur de type global name SSHException is not defined
Hors ligne
#5 Le 05/07/2016, à 16:31
- pingouinux
Re : python fabric try except et SSHException
Il faudrait que tu donnes le texte exact de l'erreur (copier-coller, et entre balises-code).
En attendant tu peux essayer ceci, mais on ne teste plus une erreur spécifique :
while(True):
for x in range(..):
try:
connecter(x)
run('....')
except: pass
Hors ligne
#6 Le 06/07/2016, à 10:16
- totola
Re : python fabric try except et SSHException
J'ai essayé except: pass mais l'erreur est la même et le programme sort de la boucle while..
L'erreur complète est celle-ci:
put('{}/Thumb.py'.format(CheminRecuperation_thumb),'{}'.format(CheminHome))
File "/usr/local/lib/python2.7/dist-packages/fabric/network.py", line 647, in host_prompting_wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/fabric/operations.py", line 346, in put
ftp = SFTP(env.host_string)
File "/usr/local/lib/python2.7/dist-packages/fabric/sftp.py", line 30, in __init__
self.ftp = connections[host_string].open_sftp()
File "/usr/local/lib/python2.7/dist-packages/paramiko/client.py", line 379, in open_sftp
return self._transport.open_sftp_client()
File "/usr/local/lib/python2.7/dist-packages/paramiko/transport.py", line 811, in open_sftp_client
return SFTPClient.from_transport(self)
File "/usr/local/lib/python2.7/dist-packages/paramiko/sftp_client.py", line 128, in from_transport
max_packet_size=max_packet_size)
File "/usr/local/lib/python2.7/dist-packages/paramiko/transport.py", line 615, in open_session
max_packet_size=max_packet_size)
File "/usr/local/lib/python2.7/dist-packages/paramiko/transport.py", line 696, in open_channel
raise SSHException('SSH session not active')
SSHException: SSH session not active
Hors ligne
#7 Le 06/07/2016, à 10:30
- pingouinux
Re : python fabric try except et SSHException
Il manque le début du message d'erreur. L'erreur est indiquée par cette ligne
put('{}/Thumb.py'.format(CheminRecuperation_thumb),'{}'.format(CheminHome))
ou une qui précède.
Hors ligne
#8 Le 08/07/2016, à 12:37
- totola
Re : python fabric try except et SSHException
Dsl je vais être obligé de mettre le programme en pause...
Mais non je ne crois pas la ligne que tu donnes n'indique aucune erreur il s'agit de la commande qui envoie le fichier Thumb.py sur les postes clients. Tout marche bien quand le poste est connecté mais s'il s'éteint il me renvoie l'erreur ci-dessus, ce qui est logique en soi si le poste est éteint, l'erreur SSH session not active est tout à fait compréhensible.. Le problème c'est que comme je lance mes instructions en continu (boucle while) cette erreur me plante tout et les instructions ne sont plus transmises sur les postes toujours allumés...
Merci
Hors ligne
#9 Le 09/07/2016, à 07:05
- pingouinux
Re : python fabric try except et SSHException
Impossible d'en dire davantage si tu ne donnes pas le retour COMPLET du message d'erreur (depuis le début).
Hors ligne
#10 Le 09/07/2016, à 07:10
- totola
Re : python fabric try except et SSHException
Oui, mais je ne l'ai pas maintenant.. je fais ça au boulot et là je n'y suis plus pour un petit moment.. Je poste ça dès que je me replonge là-dedans!
Merci de ton aide en tout cas
À+
Hors ligne