Bonjour,

Je dispose d'un script qui affiche la configuration d'un cisco.
Je me connect en ssh sur un serveur puis à partir de ce serveur je me connecte en ssh mais cette fois sur l'équipement en expect pour afficher la conf.
J'aimerai mettre le resultat dans un variable pour la traiter dans mon script perl.
Je réussi à mettre le résultat dans un fichier de log mais cela m'oblige à relire le fichier et a le retraiter.
Je pense qu'il doit être possible de capaturer ce qui est affiché à l'ecran mais je sais pas comment faire.

Merci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
34
#!/usr/bin/perl
use strict;
use warnings;
use Expect;
use Net::OpenSSH;
use IO::Pty;
use IO::Stty;
 
my $host_r="10.193.130.7";
my $user_r="PRCORSAUV01";
 
my $hostname="10.217.112.52";
my ($login,$password)=("admin","admin");
 
my $exp = new Expect;
my $ssh = Net::OpenSSH->new(${user_r}.'@'.${host_r}, ssh_cmd=> '/export/home/sarcor/bin/ssh' );
$ssh->error and
        die "Couldn't establish SSH connection: ". $ssh->error;
 
my $command = 'ssh '.${login}.'@'.${hostname};
$exp->spawn($command) or die "Cannot spawn $command: $!\n";
$exp->log_user(0);
$exp->log_file("filename.txt");  
my $patidx = $exp->expect(5, '*?assword:');
$exp->send("$password\r");
$patidx = $exp->expect(5, '#');
$exp->send("term len 0\r");
$patidx = $exp->expect(5, '#');
$exp->send("show running-config\r");
$exp->log_user(1);
#====> je veux récupérer ce qui va s'afficher à partir de là.
$patidx = $exp->expect(5, '#');
 
$exp->send("exit\r");