Précédent   Forum des professionnels en informatique > Autres langages > Perl > Programmation et administration système
Programmation et administration système Vos questions sur les scripts d'administration système, création de compte utilisateur, socket, fork, ping, etc...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2012, 16h13   #1
Invité de passage
 
Homme
Inscription : février 2012
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : février 2012
Messages : 6
Points : 0
Points : 0
Par défaut Réseau Telnet sauvegarde config switch Nortel

Bonjour à tous,
J'aimerai concevoir un script perl qui me permet de réaliser une session Telnet et ensuite de pouvoir exécuter des commandes . Étant novice en la matière je fais appel à votre gentillesse et à votregrand savoir ;-)
Voici ci-dessous mon script . Merci d'avance

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/perl
 
use Net::Telnet;
 
######################### DATE #######################################
$annee = 1900 + (localtime(time))[5]; # Nombre d'annee depuis 1900#
$jour = (localtime(time))[3];                 # [1,2,3,4-31]      #
$mois = (localtime(time))[4]+1;               # Janvier=0         #
######################################################################
 
$iptftp='192.168.32.17';
$prompt ='/.*[\$#:>\]\%] *$/';
$host ='192.168.32.249';
$telnet = new Net::Telnet (Timeout => 20, Prompt => $prompt, Errmode=>'return');
 
if ($telnet->open($host))
{
$telnet->cmd("\cY");
$telnet->cmd("c");
@Result= $telnet->cmd("show ip");
print @Result;
$telnet->cmd("exit");
$telnet->close;
}
 
else
{
print("pas de telnet\n");
}
Mustaal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 11h09   #2
Invité de passage
 
Homme
Inscription : février 2012
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : février 2012
Messages : 6
Points : 0
Points : 0
Bonjour,

Pour préciser lorsqu'on fait un telnet sur un switch Nortel on doit en premier lieu taper 'CRTL+ Y' ensuite on tombe sur un menu et là on doit taper 'c' pour arriver enfin en commande line.

J'ai adapté mon script mais les commandes des lignes ci dessous me renvoie rien.
Code :
1
2
3
 
@lines = $telnet->waitfor("show ip");
print @lines;
Comment savoir si mes commandes sont bien passées?


Merci d'avance....

Voici mon script adapté

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/perl
 
use Net::Telnet;
 
 
######################### DATE #######################################
$annee = 1900 + (localtime(time))[5]; # Nombre d'annee depuis 1900#
$jour = (localtime(time))[3];                 # [1,2,3,4-31]      #
$mois = (localtime(time))[4]+1;               # Janvier=0         #
######################################################################
 
$iptftp='192.168.32.17';
$prompt ='/.*[\$#:>\]\%] *$/';
$host ='192.168.32.249';
$telnet = new Net::Telnet (Timeout => 20, Prompt => $prompt, Errmode=>'return');
 
if ($telnet->open($host))
{
print("telnet reussi\n");
$telnet->waitfor("\cY");
print("CTRL Y reussi\n");
$telnet->waitfor("c");
print("C  reussi\n");
@lines = $telnet->waitfor("show ip");
print @lines;
#$telnet->cmd("exit");
$telnet->close;
}
 
else
{
print("pas de telnet\n");
}
Mustaal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 16h18   #3
Invité de passage
 
Homme
Inscription : février 2012
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : février 2012
Messages : 6
Points : 0
Points : 0
Up please.....
Mustaal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 14h39   #4
Invité de passage
 
Homme
Inscription : février 2012
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : février 2012
Messages : 6
Points : 0
Points : 0
Bonjour,

j'ai encore travaillé sur mon script mais le resultat qui me donne c'est toujours 1 ! Avez vous une idée d'où pourrait venir le problème
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
#!/usr/bin/perl
 
use Net::Telnet;
 
$prompt ='/.*[\$#:>\]\%] *$/';
$host ='192.168.32.249';
$t= new Net::Telnet (Timeout=>25,
      Errmode=>'return',
      prompt=>$prompt
      );
      $t->open($host);
      @lines=$t->put("^Y") or die "=> Echec de l'envoi de Ctrl+Y \n=> ".$t->errmsg."";
      print "@lines\n";
      sleep 2;
      @lines=$t->put("c") or die "=> Echec de l'envoi de Maj+C \n=> ".$t->errmsg."";
      print "@lines\n";
      sleep 2;
      @lines= $t->put("enable") or die "=> Echec de l'envoi de enable \n=> ".$t->errmsg."";
      print "@lines\n";
      sleep 2;
      @lines=$t->put("show ip") or die "=> Echec de l'envoi de show ip \n=> ".$t->errmsg."";
      print "@lines\n";
      $t->close;
?
Mustaal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 14h56   #5
Membre éprouvé
 
Avatar de Beniou
 
Homme
Inscription : novembre 2009
Messages : 348
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : novembre 2009
Messages : 348
Points : 492
Points : 492
Bonjour,

La méthode put renvoie 1 si la commande est bien passée. Elle ne renverra donc pas ton ip lorsque tu fais "show ip".
Tu dois utiliser la commande "cmd" plutôt je dirais (je n'ai jamais utilisé ce module).
Beniou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2012, 13h41   #6
Invité de passage
 
Homme
Inscription : février 2012
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : février 2012
Messages : 6
Points : 0
Points : 0
J'avance j'avance ! Mes commandes passent bien, le seul hic c'est que j'ai comme résultat de retour 1. Une idée de la cause??

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/perl
 
use Net::Telnet;
 
$prompt ='/.*[\$#:>\]\%] *$/';  #prend en compte n'importe caractéres du prompt
$host ='192.168.32.249';
 
$telnet = new Net::Telnet (Timeout => 20, Errmode=>'return');
 
if ($telnet->open($host))
    {
    $telnet->waitfor("Enter Ctrl-Y to begin.");
    $telnet->print("\031") or die "=> Echec de l'envoi de Ctrl+Y \n=> ".$telnet->errmsg."";
    sleep 1;
    $telnet->waitfor("IP Configuration/Setup...");
    $telnet->print("c") or die "=> Echec de l'envoi de Maj+C \n=> ".$telnet->errmsg."";
    sleep 1;
    $telnet->waitfor("$prompt");
    @Result= $telnet->print("show ip") or die "=> Echec de l'envoi de show ip \n=> ".$telnet->errmsg."";
    sleep 1;
    $telnet->waitfor("$prompt");
    print ("@Result\n");
 
    $telnet->close;
    }
 
else
    {
      print("Impossible d'établir une session\n");
    }
Mustaal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2012, 14h04   #7
Membre éprouvé
 
Avatar de Beniou
 
Homme
Inscription : novembre 2009
Messages : 348
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : novembre 2009
Messages : 348
Points : 492
Points : 492
Citation:
Envoyé par Mustaal
Mes commandes passent bien, le seul hic c'est que j'ai comme résultat de retour 1. Une idée de la cause??
Comme dit dans mon précédent post, ces commandes retournent 1 si elles se sont bien passées : c'est donc normal.

Encore une fois : si tu utilises la commande "cmd" comme ceci est ce que cela fonctionne ?
Code :
1
2
3
4
@Result= $telnet->cmd("show ip") or die "=> Echec de l'envoi de show ip \n=> ".$telnet->errmsg."";
sleep 1;
$telnet->waitfor("$prompt");
print ("@Result\n");
Beniou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2012, 14h58   #8
Invité de passage
 
Homme
Inscription : février 2012
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : février 2012
Messages : 6
Points : 0
Points : 0
J'ai trouvé le problème j'aurai dû faire une get () :

exemple:
Code :
1
2
3
4
$telnet->print("show ip") or die "=> Echec de l'envoi de show ip \n=> ".$telnet->errmsg."";
    @result= $telnet->get();
    $telnet->waitfor("$prompt");
    print @result;
Là j'ai le résultat de ma commande qui s'affiche à l'écran.....
Mustaal est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h50.


 
 
 
 
Partenaires

Hébergement Web