Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/07/2016, à 19: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, à 20: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, à 20:18

totola

Re : python fabric try except et SSHException

Merci de la réactivité pingouinux! smile
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, à 15: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, à 17: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, à 11: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, à 11: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, à 13:37

totola

Re : python fabric try except et SSHException

Dsl je vais être obligé de mettre le programme en pause... hmm

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, à 08: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, à 08: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