J'ai du mal à écrire un script Python qui peut se connecter à nos routeurs Cisco et collecter la sortie de commandes simples. Le défi est que tous les routeurs ne sont pas configurés de la même manière. Lorsque vous effectuez un telnet pour certains d'entre eux, vous devez entrer un mot de passe &; les autres routeurs vous mettent au défi pour le mot de passe uniquement. Mon script doit être assez intelligent pour faire la différence.Python Script Telnets à Cisco Router ... puis blocs?
J'ai écrit le code ci-dessous, qui est assez intelligent pour réaliser si le routeur attend un nom d'utilisateur ou non. Le problème est, il semble bloquer après avec succès la connexion. (Cela fonctionne pour les noms d'utilisateur/mot de passe et mot de passe seulement des routeurs.) J'ai passé la journée à lutter avec ce code, et je pense que le code bloque quand j'essaye lire après avoir envoyé ma commande Cisco simple. (Mais c'est aussi possible que le "show ip int bref" commmand n'est pas envoyé.)
Voici le code:
#!/usr/bin/python
import telnetlib
import sys
def telnetLogin(host):
username = "userguy" # Correct username
password = "password1" # Correct password
flag = 1
tn = telnetlib.Telnet(host)
while(flag):
output = tn.read_some() # get one line
if("username:" in output.lower()): # We are prompted for "Username:"
tn.write(username+"\n")
elif("password:" in output.lower()): # We are prompted for "Password:"
tn.write(password+"\n")
flag = 0
print("======================================================") # Code reaches here
tn.write("show ip int brief"+"\n") # Issue simple Cisco cmd here
output = tn.read_all() # I am blocking here???
#output = tn.read_until(">", 2) # This doesn't work either
print "output :: "+output # I never reach this line
tn.close()
def main():
host = sys.argv[1]
output=telnetLogin(host)
if __name__ == "__main__":
main()
print("Program done!\n")
Voici la sortie:
[Linux]$ ./telnetToRouter.py RouterA
======================================================
...program blocks here...
Je ne peux pas comprendre pourquoi je serais capable de lire/écrire avec succès pour me connecter, mais je ne pourrais pas lire/écrire après cela. Comment dépannez-vous quelque chose comme ça?
Merci, -RAO