-- edit par Jackho : J'aurai peut etre du mettre ce message dans la section Réseau.... --


Bonjour à tous,

j'ai commencé hier à me plonger dans Python pour réaliser un programme se connectant en telnet sur plusieurs routeurs pour leur envoyer des lignes de commandes.
Je récupère dans 2 fichiers l'adresse des routeurs (host) (et le mdp) et dans l'autre fichier les commandes à exécuter.

Mais il se peut qu'une de ces commandes ne s'éxécute pas correctement auquel cas une erreur est retournée (sans pour autant empecher le programme de continuer son exécution).

Par exemple en rentrant une mauvaise ligne de commande je pourrai ressortir avec l'erreur "% Invalid input detected at '^' marker."

Je souhaiterai donc etre capable de détecter cette erreur afin d'afficher un message d'erreur et modifier le fonctionnement du programme (éviter l'insertion des autres lignes de commandes).

J'ai essayé ceci, qui ne marche pas:
if tn.read_until("% Invalid input detected at '^' marker."):

et j'ai aussi essayé, sans succes, avec tn.expect("% Invalid input detected at '^' marker.")

Comment puis-je faire ? Je suis sur que c'est tout bete mais je ne sais pas comment faire.

Merci d'avance

_____ Sylvain _____

Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# -*- coding: cp1252 -*-
import os
import sys
import telnetlib
 
 
login = "calcejo"
 
## Boucle sur liste.txt contenant les hostnames
file=open('liste.txt','r')
 
for ligne in file.readlines() :
    donnees = ligne.split()
 
    Host = donnees[0]
    password = donnees[1]
 
    try :
        tn = telnetlib.Telnet(Host)
        print "_______________________"
        print Host
 
        ok = tn.read_until("Username: ",1)
        print ok
 
        tn.write(login + "\n")
        if password:
            tn.read_until("Password: ")
            tn.write(password + "\n")
            ## Boucle sur commandes.txt contenant les commandes
            file2=open('commandes.txt','r')
            for ligne2 in file2.readlines() :
                tn.write(ligne2)
 
            tn.write("exit\n")
            print tn.read_all()
            file2.close()
 
    except:
        print "_______________________"
        print "Erreur d'accès en Telnet sur : ", Host
        continue
 
## Ferme le fichier liste.txt  
file.close()