2016-06-17 1 views
0

J'ai un petit script qui se connecte à un commutateur réseau et exécute des commandes. Cela fonctionne bien mais j'en ai besoin arrêtez et montrez un message d'erreur si l'une des commandes échoue ou que le réseau donne un déclin ou quelque chose.Script Python pour intercepter les commandes ou les messages d'avertissement ayant échoué

Voici le code:

import sys 
import telnetlib 


HOST = "10.10.10.1" 
user = "Test" 
password = "TestPW" 

tn = telnetlib.Telnet(HOST) 

tn.read_until("username: ") 
tn.write(user + "\n") 
tn.read_until("password: ") 
tn.write(password + "\n") 

n, match, previous_text = tn.expect([r'Login incorrect', r'\$'], 1) 
if n == 0: 
    print "Invalid Credentials" 
    tn.close() 
else: 
    tn.write("Term len 0\n") 
    #Reads data from commands.txt file and executes it line by line 
    with open("commands.txt") as commands: 
     singlecommand = commands.read() 
     tn.write(singlecommand) 
     print singlecommand 
    #Need exception/error checking to catch fail commands or warnings. 
    tn.write("exit\n") 
    tn.write("y\n") 
    print tn.read_all() 
    tn.close() 

Je veux que le script pour arrêter l'exécution de plusieurs commandes après une commande échec ou un avertissement de CLI que quelque chose peut-être faux. Il a déjà la fonction d'impression, il devrait donc afficher le message d'erreur et la commande qui a échoué.

Voici un exemple d'une commande qui a échoué:

% Entrée non valide détectée au marqueur '^'.

Voici un exemple de message d'avertissement:

% Attention:

Répondre

0

Vous pouvez utiliser Try/Except déclarations.

Ils sont liés à la partie Errors and Exceptions des documents Python.

Exemple:

try: 
    wrong_sum = "a" + 2 
except ValueError: 
    print "You got a Value Error" 
else: 
    break 
0

vous pouvez extraire le message en fonction de mot clé commande en échec semblait, puis soulevez l'exception. Par exemple:

try: 
    if '%Warning' == message[:8]: 
      raise Exception('Test') 
except Exception: 
    print message