Script Telnet switcht Nortel/Avaya

Script Telnet switcht Nortel/Avaya - Perl - Programmation

Marsh Posté le 07-06-2013 à 11:35:19    

Bonjour à tous,

 

J'aimerai automatiser les sauvegardes automatiques de nos matériels réseaux=> switchs et routeurs.
A cette fin,j''ai créé un script perl qui fonctionne très bien mais là où j'ai un problème ce sont mes switchs qui demandes une authentification (Radius) en plus. Je m'explique, sur les switchs Nortel/avaya sans authentification Radius, une fois la session telnet établie on appuie sur les touche Ctrl+y afin d'accéder au menu du switch,mon script exécute les différents commandes pour la sauvegarde de la config.
Mais concernant les switchs Nortel/avaya avec authentification Radius, une fois la session telnet établie on appuie sur les touces Ctrl+y ensuite une nouvelle une fenêtre nous invite à introduire le User et le Password et c'est à ce niveau que je bloque depuis un certain temps. J'ai comme retour grâce au get() : User name not set!!
Là je suis perdu, le message user name not set, je ne peux l'avoir que si je n'introduis pas de user mais que j'introduis un mot de passe!
Que j'utilise waitfor() ou login() le problème est le même.

 

Pour info:
une capture de  l'écran après q'une session telnet soit établie:
http://imageshack.us/photo/my-images/841/login1h.png/

 

Une capture d'écran de l'invite radius :
http://imageshack.us/photo/my-images/703/login2f.png/

 

une capture d'écran du retour du get():
http://imageshack.us/photo/my-images/221/loginet.png/

 


Je fais appels à vos connaissances et gentillesses afin de résoudre ce petit problème qui me pourri la vie depuis une semaine ;-)

 


Code :
  1. if ($TELNET->open($HOST))
  2.    {
  3.     $TELNET->waitfor("Enter Ctrl-Y to begin." );
  4.     $TELNET->print("\cY" ) or die "=> cannot send Ctrl+Y \n=> ".$TELNET->errmsg."";
  5.     $TELNET->login("tftpbackup","tftpbackup" );
  6.     $TELNET->waitfor("IP Configuration/Setup..." );
  7.     $TELNET->print("c" ) or die "=> cannot send C \n=> ".$TELNET->errmsg."";
  8.     $TELNET->waitfor("$prompt" );
  9.     $TELNET->print("en\n" ) or die "=> cannot send enable \n=> ".$TELNET->errmsg."";
  10.     $TELNET->waitfor("$prompt" );
  11.     $TELNET->print("copy config tftp filename Test address 1.1.1.1" ) or die "=> Echec de l'envoi copy config \n=> ".$TELNET->errmsg."";
  12.     sleep 1;
  13.     @result=$TELNET->get();
  14.     $TELNET->waitfor("$prompt" );
  15.     print @result;
  16.  
  17.    }
  18. else
  19.     {
  20.       print("telnet pas possible\n" );
  21.     }


Message édité par Mustaal le 07-06-2013 à 11:42:42
Reply

Marsh Posté le 07-06-2013 à 11:35:19   

Reply

Marsh Posté le 07-06-2013 à 11:48:08    

:hello: Bonjour,
 
Avez vous lu les deux sujets suivants:
http://forum.hardware.fr/hfr/Progr [...] 9513_1.htm
http://forum.hardware.fr/hfr/Progr [...] 9577_1.htm
Il se pourrait bien que les informations qui y figurent suffisent a résoudre votre pb, sinon, on poussera plus en avant les investigations.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 07-06-2013 à 13:39:03    

gilou a écrit :

:hello: Bonjour,
 
Avez vous lu les deux sujets suivants:
http://forum.hardware.fr/hfr/Progr [...] 9513_1.htm
http://forum.hardware.fr/hfr/Progr [...] 9577_1.htm
Il se pourrait bien que les informations qui y figurent suffisent a résoudre votre pb, sinon, on poussera plus en avant les investigations.
 
A+,


 
 
Merci pour ta réponse rapide mais j'ai déjà lu ces deux sujets sans pour autant trouver une solution à mon problème.
 
Lorsque je test ces lignes :

Code :
  1. i if ($TELNET->open($HOST))
  2.    {
  3.     sleep 1;
  4.     $TELNET->waitfor("Enter Ctrl-Y to begin." );
  5.     $TELNET->print("\031" ) or die "=> cannot send Ctrl+Y \n=> ".$TELNET->errmsg."";
  6.     sleep 1;
  7.     @result=$TELNET->get();
  8.     $TELNET->waitfor('$prompt');
  9.     print @result;
  10.    }
  11. else
  12.     {
  13.          print("telnet pas possible\n" );
  14.     }


 
mon get() renvoie:
?[16;1HEnter Ctrl-Y to begin.?[18;3H********************************************
*******************?[19;3H*** Ethernet Switch 470-48T     ?[19;63H***?[20;3H***
Nortel                                                  ***?[21;3H*** Copyright
(c) 1996-2009,  All Rights Reserved           ***?[22;3H*** ESS 3.7 SSH?[22;63H*
**?[23;3H*** HW:33       FW:3.6.0.7   SW:v3.7.6.01 ISVN:2 ?[23;63H***?[24;3H****
***********************************************************?[?25l?[14;1H?[2K?[4;
1H?[2K?[4;26HUsername: [                 ]?[5;36H?[7;1m[ *************** ]?[0m?[
14;26HEnter Password: ?[?14l?[2J?[1;38HNetLogin?[4;26HUsername: ?[7;1m[  ]?[5;36
H?[7;1m[ *************** ]?[0m?[23;1H?[2KEnter text, press <Return> or <Enter> w
hen complete.?[14;26HEnter Username:
_____________________________________________________________________________
 
Et lorsque j'ajoute la fonction login:

Code :
  1. i if ($TELNET->open($HOST))
  2.    {
  3.     sleep 1;
  4.     $TELNET->waitfor("Enter Ctrl-Y to begin." );
  5.     $TELNET->print("\031" ) or die "=> cannot send Ctrl+Y \n=> ".$TELNET->errmsg."";
  6.     sleep 1;
  7.     $TELNET->login("dupont","mdp" );
  8.    sleep 1;
  9.     @result=$TELNET->get();
  10.     $TELNET->waitfor('$prompt');
  11.     print @result;
  12.    }
  13. else
  14.     {
  15.          print("telnet pas possible\n" );
  16.     }


 
Mon get() me renvoie:
 
←[14;1H←[2K←[14;26HEnter Password: *******←[14;26H←[2KUsername not set.
_____________________________________________________________________________
 
Que j'utilise login() ou waitfor() j'ai toujours ce Username not set!
 
j 'ai aussi  utilisé la commande dump_log dans mon script:
 
$TLENET->waitfor("Enter CTRL-y to begin." );
$TELNET->print("\cY" );
$TELNET->dump_log("avantlogin.txt" );
$TELNET->login("dupont","mdp" );
$TELNET->dump("apreslogin.txt" );
.
.
.
 
avantloin.txt donne:
< 0x003c0: 20 2a 0a 0d 1b 5b 31 34 3b 31 48 20 20 2a 2a 2a *...[14;1H ***
< 0x003d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
< 0x003e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
< 0x003f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
< 0x00400: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 0d 1b 5b ************...[
< 0x00410: 31 35 3b 31 48 0a 0d 1b 5b 31 36 3b 31 48 45 6e 15;1H...[16;1HEn
< 0x00420: 74 65 72 20 43 74 72 6c 2d 59 20 74 6f 20 62 65 ter Ctrl-Y to be
< 0x00430: 67 69 6e 2e 1b 5b 31 38 3b 33 48 2a 2a 2a 2a 2a gin..[18;3H*****
< 0x00440: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
< 0x00450: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
< 0x00460: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
< 0x00470: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 1b 5b 31 39 3b 33 **********.[19;3
< 0x00480: 48 2a 2a 2a 20 45 74 68 65 72 6e 65 74 20 53 77 H*** Ethernet Sw
< 0x00490: 69 74 63 68 20 34 37 30 2d 34 38 54 20 20 20 20 itch 470-48T
< 0x004a0: 20 1b 5b 31 39 3b 36 33 48 2a 2a 2a 1b 5b 32 30 .[19;63H***.[20
< 0x004b0: 3b 33 48 2a 2a 2a 20 4e 6f 72 74 65 6c 20 20 20 ;3H*** Nortel
< 0x004c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
< 0x004d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
< 0x004e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a *
< 0x004f0: 2a 2a 1b 5b 32 31 3b 33 48 2a 2a 2a 20 43 6f 70 **.[21;3H*** Cop
< 0x00500: 79 72 69 67 68 74 20 28 63 29 20 31 39 39 36 2d yright (c) 1996-
< 0x00510: 32 30 30 39 2c 20 20 41 6c 6c 20 52 69 67 68 74 2009. All Right
< 0x00520: 73 20 52 65 73 65 72 76 65 64 20 20 20 20 20 20 s Reserved
< 0x00530: 20 20 20 20 20 2a 2a 2a 1b 5b 32 32 3b 33 48 2a ***.[22;3H*
< 0x00540: 2a 2a 20 45 53 53 20 33 2e 37 20 53 53 48 1b 5b ** ESS 3.7 SSH.[
< 0x00550: 32 32 3b 36 33 48 2a 2a 2a 1b 5b 32 33 3b 33 48 22;63H***.[23;3H
< 0x00560: 2a 2a 2a 20 48 57 3a 33 33 20 20 20 20 20 20 20 *** HW:33
< 0x00570: 46 57 3a 33 2e 36 2e 30 2e 37 20 20 20 53 57 3a FW:3.6.0.7 SW:
< 0x00580: 76 33 2e 37 2e 36 2e 30 31 20 49 53 56 4e 3a 32 v3.7.6.01 ISVN:2
< 0x00590: 20 1b 5b 32 33 3b 36 33 48 2a 2a 2a 1b 5b 32 34 .[23;63H***.[24
< 0x005a0: 3b 33 48 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ;3H*************
< 0x005b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
< 0x005c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
< 0x005d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
< 0x005e0: 2a 2a 1b 5b 3f 32 35 6c 1b 5b 31 34 3b 31 48 1b **.[?25l.[14;1H.
< 0x005f0: 5b 32 4b 1b 5b 34 3b 31 48 1b 5b 32 4b 1b 5b 34 [2K.[4;1H.[2K.[4
< 0x00600: 3b 32 36 48 55 73 65 72 6e 61 6d 65 3a 20 5b 20 ;26HUsername: [
< 0x00610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
< 0x00620: 5d 1b 5b 35 3b 33 36 48 1b 5b 37 3b 31 6d 5b 20 ].[5;36H.[7;1m[
< 0x00630: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 ***************
< 0x00640: 5d 1b 5b 30 6d 1b 5b 31 34 3b 32 36 48 45 6e 74 ].[0m.[14;26HEnt
< 0x00650: 65 72 20 50 61 73 73 77 6f 72 64 3a 20 1b 5b 3f er Password: .[?
< 0x00660: 31 34 6c 1b 5b 32 4a 1b 5b 31 3b 33 38 48 4e 65 14l.[2J.[1;38HNe
< 0x00670: 74 4c 6f 67 69 6e 1b 5b 34 3b 32 36 48 55 73 65 tLogin.[4;26HUse
< 0x00680: 72 6e 61 6d 65 3a 20 1b 5b 37 3b 31 6d 5b 20 20 rname: .[7;1m[
< 0x00690: 5d 1b 5b 35 3b 33 36 48 1b 5b 37 3b 31 6d 5b 20 ].[5;36H.[7;1m[
< 0x006a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 ***************
< 0x006b0: 5d 1b 5b 30 6d 1b 5b 32 33 3b 31 48 1b 5b 32 4b ].[0m.[23;1H.[2K
< 0x006c0: 45 6e 74 65 72 20 74 65 78 74 2c 20 70 72 65 73 Enter text. pres
< 0x006d0: 73 20 3c 52 65 74 75 72 6e 3e 20 6f 72 20 3c 45 s <Return> or <E
< 0x006e0: 6e 74 65 72 3e 20 77 68 65 6e 20 63 6f 6d 70 6c nter> when compl
< 0x006f0: 65 74 65 2e 1b 5b 31 34 3b 32 36 48 45 6e 74 65 ete..[14;26HEnte
< 0x00700: 72 20 55 73 65 72 6e 61 6d 65 3a 20 r Username:
 
> 0x00000: ff fd 01 ÿý.
 
> 0x00000: 74 66 74 70 62 61 63 6b 75 70 0d 0a tftpbackup..
 
< 0x00000: 1b 5b 31 34 3b 31 48 1b 5b 32 4b 1b 5b 31 34 3b .[14;1H.[2K.[14;
< 0x00010: 32 36 48 45 6e 74 65 72 20 50 61 73 73 77 6f 72 26HEnter Passwor
< 0x00020: 64 3a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 1b 5b 31 d: **********.[1
< 0x00030: 34 3b 32 36 48 1b 5b 32 4b 55 73 65 72 6e 61 6d 4;26H.[2KUsernam
< 0x00040: 65 20 6e 6f 74 20 73 65 74 2e e not set.

 
-_______________________________________________________________________
apreslogin.txt:
rien  
 
 
Merci de venir à mon secours ;-)


Message édité par Mustaal le 07-06-2013 à 16:29:13
Reply

Marsh Posté le 07-06-2013 à 18:18:30    

Et en remplaçant
$TELNET->print("\031" ) or die "=> cannot send Ctrl+Y \n=> ".$TELNET->errmsg."";
par
$TELNET->put("\cY" ) or die "=> cannot send Ctrl+Y \n=> ".$TELNET->errmsg."";
vu que le print va envoyer un \n de trop, comme expliqué sur mon second lien.
Ça change quelque chose?
A+,

Message cité 1 fois
Message édité par gilou le 07-06-2013 à 18:18:49

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 10-06-2013 à 09:35:49    

gilou a écrit :

Et en remplaçant
$TELNET->print("\031" ) or die "=> cannot send Ctrl+Y \n=> ".$TELNET->errmsg."";
par
$TELNET->put("\cY" ) or die "=> cannot send Ctrl+Y \n=> ".$TELNET->errmsg."";
vu que le print va envoyer un \n de trop, comme expliqué sur mon second lien.
Ça change quelque chose?
A+,


 
 
Bonjour,
 
Tu as vu  juste avec un put("\cY" ) , cela fonctionne impeccable!  
Avec le print() javais un retour à la ligne, mais je n'ai pas tilté dessus!  
 
Merci Gilou!!


Message édité par Mustaal le 10-06-2013 à 09:36:37
Reply

Marsh Posté le 03-12-2013 à 16:22:24    

Bonjour,
Pourrait-tu poster l'intégralité de ton script stp car j'aimerais automatiser certaines taches sur mon parc de switch Avaya et étant débutant en perl, j'ai essayé de m'inspirer de ton code et de beaucoup de "tuto"/forum sur le net mais je galère vraiment au niveau de la connexion telnet et du prompt.
D'avance merci.
Cordialement,


Message édité par eycau le 03-12-2013 à 16:25:00
Reply

Marsh Posté le 06-12-2013 à 19:44:07    

Il n'est pas passé sur le forum depuis cet été. Tu as été voir les liens donnés dans ma première réponse?
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 09-12-2013 à 13:49:34    

Bonjour,
Oui j'ai été voir mais ca ne m'aide pas vu que j'essaye de faire un script pour des switch Nortel/Avaya.
Je suis convaincu que c'est le prompt qui m'empêche d'aller plus loin et comme je suis débutant en Perl...

Reply

Marsh Posté le 09-12-2013 à 14:31:33    

Oui, enfin bon, la, tu as toutes les billes, entre ce post et les deux autres pointés.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed