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 :
- #!/usr/local/Python-3.6.5/python
- import sys
- import telnetlib
- import re
- import base64
- HOST = ""
- user = ""
- password =""
- credentials_file = "/home2/admin/scripts/tools/router_show_commands-credentials.txt"
- commandes_file = "/home2/admin/scripts/tools/router_show_commands-commands.txt"
- credentials = None
- with open(credentials_file,"r" ) as f:
- credentials = f.read().splitlines()
- user = base64.b64decode(credentials[0])
- password = base64.b64decode(credentials[1])
- tn = telnetlib.Telnet(HOST)
- tn.read_until(b"Username: " )
- tn.write(user + b"\n" )
- tn.read_until(b"Password: " )
- tn.write(password + b"\n" )
- n, match, previous_text = tn.expect([re.compile(b"Login incorrect", re.I), re.compile(b"\$" )], 1)
- if n == 0:
- print ("Erreur Login/Pwd" )
- tn.close()
- else:
- tn.write(b"Term len 0\n" )
- with open(commandes_file) as commands:
- singleCommand = bytes(commands.read())
- tn.write(singleCommand)
- print (singleCommand)
- try:
- o = tn.expect(['#', '% Invalid'])
- if o != 0:
- raise OurException("ERREUR" )
- except Exception:
- print "TOUT EST OK"
- pass
- tn.write(b"exit\n" )
- tn.write(b"y\n" )
- print (tn.read_all().decode("ascii" ))
- 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 :
- sh clock
- sh ver
- sh titi
- TOUT EST OK
- .....
- router#sh titi
- ^
- % Invalid input detected at '^' marker.
- 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