Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1095 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  [Python] Connection aux routeurs et détection d'erreur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Python] Connection aux routeurs et détection d'erreur

n°2324656
kill9
Il a été tué vivant.
Posté le 22-11-2018 à 15:50:04  profilanswer
 

Bonjour,
 
Je n'ai jamais programmé en Python, j'ai fait un peu de C, de PHP et je fais désormais un peu de VBA pour automatiser les traitements sous Excel.
 
Mon domaine étant le LAN/WAN, j'ai en charge de créer un script permettant de se connecter à des routeurs, de passer des commandes et de noter les routeurs qui donneront des erreurs aux commandes passées.
 
Pour être totalement transparent, j'ai pompé un script sur le net mais il ne fait pas la partie sur la détection d'erreur.
Un peu d'aide serait la bienvenue.
 
La demande est très inhabituelle, c'est juste qu'en attendant de pouvoir trouver le temps d'apprendre par moi-même le language, j'ai un délai max pour mon client.
 
Voici le script (le repompé)

Code :
  1. import sys
  2. import telnetlib
  3. HOST = ""
  4. user = ""
  5. password = ""
  6. tn = telnetlib.Telnet(HOST)
  7. tn.read_until("username: " )
  8. tn.write(user + "\n" )
  9. tn.read_until("password: " )
  10. tn.write(password + "\n" )
  11. n, match, previous_text = tn.expect([r'Login incorrect', r'\$'], 1)
  12. if n == 0:
  13.     print "Erreur Login/Pwd"
  14.     tn.close()
  15. else:
  16.     tn.write("Term len 0\n" )
  17.     with open("commands.txt" ) as commands:
  18.         singlecommand = commands.read()
  19.         tn.write(singlecommand)
  20.         print singlecommand
  21.     tn.write("exit\n" )
  22.     tn.write("y\n" )
  23.     print tn.read_all()
  24.     tn.close()


 
 

mood
Publicité
Posté le 22-11-2018 à 15:50:04  profilanswer
 

n°2324711
kill9
Il a été tué vivant.
Posté le 23-11-2018 à 17:34:12  profilanswer
 

Bonsoir,
 
J'ai un peu amélioré le script, cependant, le contrôle d'erreur ne fonctionne pas et je ne vois pas pourquoi.
 

Code :
  1. #!/usr/local/Python-3.6.5/python
  2. import sys
  3. import telnetlib
  4. import re
  5. import base64
  6. HOST = ""
  7. user = ""
  8. password =""
  9. credentials_file = "/home2/admin/scripts/tools/router_show_commands-credentials.txt"
  10. commandes_file = "/home2/admin/scripts/tools/router_show_commands-commands.txt"
  11. credentials = None
  12. with open(credentials_file,"r" ) as f:
  13.         credentials = f.read().splitlines()
  14. user = base64.b64decode(credentials[0])
  15. password = base64.b64decode(credentials[1])
  16. tn = telnetlib.Telnet(HOST)
  17. tn.read_until(b"Username: " )
  18. tn.write(user + b"\n" )
  19. tn.read_until(b"Password: " )
  20. tn.write(password + b"\n" )
  21. n, match, previous_text = tn.expect([re.compile(b"Login incorrect", re.I), re.compile(b"\$" )], 1)
  22. if n == 0:
  23.     print ("Erreur Login/Pwd" )
  24.     tn.close()
  25. else:
  26.     tn.write(b"Term len 0\n" )
  27.     with open(commandes_file) as commands:
  28.         singleCommand = bytes(commands.read())
  29.         tn.write(singleCommand)
  30.         print (singleCommand)
  31.     try:
  32.         o = tn.expect(['#', '% Invalid'])
  33.         if o != 0:
  34.           raise OurException("ERREUR" )
  35.     except Exception:
  36.         print "TOUT EST OK"
  37.         pass
  38.     tn.write(b"exit\n" )
  39.     tn.write(b"y\n" )
  40.     print (tn.read_all().decode("ascii" ))
  41.     tn.close()


 
Dans le fichier "router_show_commands-commands.txt", lorsque j'y inclus volontairement un "sh titi", le script s'exécute de la façon suivante
 

Code :
  1. sh clock
  2. sh ver
  3. sh titi
  4. TOUT EST OK
  5. .....
  6. router#sh titi
  7.                     ^
  8. % Invalid input detected at '^' marker.
  9. router#exit


 
C'est comme s'il ne voyait pas l'erreur et je ne vois pas la mienne dans le script.
 
Merci de votre aide.


Message édité par kill9 le 23-11-2018 à 17:34:53
n°2324866
kill9
Il a été tué vivant.
Posté le 28-11-2018 à 10:11:06  profilanswer
 

Ok trouvé.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  [Python] Connection aux routeurs et détection d'erreur

 

Sujets relatifs
Python remplacer un caractère dans une chaineErreur en fin de boucle ?
Fonction recherchev vba erreur indicePetit jeu en python
Erreur connexion à la database[Shell Bash] Vérifier l'absence d'erreur sur équipement Cisco
Erreur #nom? dans texte_box sur Etat[VBA] Erreur 4605 lors d'un Publipostage.
Python en finance - contrôle de gestion 
Plus de sujets relatifs à : [Python] Connection aux routeurs et détection d'erreur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR