La connection sur des périphériques via SSH est un problème que j'ai constaté assez récurrent, et assez problématique vis à vis de certains périphériques cisco. Venant de trouver une solution à mon problème, je la poste en ésperant qu'elle pourra en aider certains :
Donc pour tout ceux qui ont des problèmes avec Net::SSH::Perl ou Perl::SSH2, voir même Net::Appliance::session, voici une piste :
Je précise que cela est tiré de la doc CPAN, et j'ai simpleéent réduit le script au minimum pour mes besoins.
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 Net::SSH::Expect; my $ssh = Net::SSH::Expect->new ( host => "192.168.90.100", password=> 'cisco', user => 'admin', raw_pty => 1 ); my $enable_passwd = "cisco"; my $login_output = $ssh->login(); $ssh->run_ssh() or die "SSH process couldn't start: $!"; $ssh->send("enable"); $ssh->waitfor('Password:\s*\z', 1) or die "prompt 'password' not found after 1 second"; $ssh->send($enable_passwd); my $ls = $ssh->exec("show hosts"); print($ls); # When running a command that causes a huge output, # lets get the output line by line: $ssh->send("show interfaces"); # using send() instead of exec() my $line; # returns the next line, removing it from the input stream: while ( defined ($line = $ssh->read_line()) ) { print $line . "\n"; } # closes the ssh connection $ssh->close();
Cependant, j'ai un dernier souci : avec ce script, l'execution de plusieurs commandes ne pose aucun problème (plus de soucis de channel), mais lors d'affichage de grande sortie (genre un résultat de commande de plusieurs 10 aines de lignes), je n'arrive pas passer outre le "--More--" de cisco. Donc au final, je n'arrive recuperer dans une variable que la preéière page de l'affichage.
Si quelqu'un a une piste ou une solution à ce problème...
Partager