perl net::telnet. метод cmd() возвращает предыдущий вывод консольки
#!/usr/local/bin/perl
use strict;
use Net::SSH::Perl;
my $host = 'myhost';
my %comm_files = ('sh ip slb conns' => 'conns.dat',
'sh ip slb vservers' => 'vservers.dat',
'sh ip slb reals' => 'reals.dat');
foreach my $command (keys(%comm_files{
my $ssh = Net::SSH::Perl->new($host);
$ssh->login('user', 'pass');
my $fname = $host.'-'.$comm_files{$command};
print "Executing $command, put result in ".$fname."...";
my($conns, $stderr, $exit) = $ssh->cmd($command);
print "exit status: $exit\n";
open(FH, ">".$fname);
print FH $conns;
close(FH);
}
$t->waitfor('/Password:.*$/');а почему после этого print-а ты не поставил waitfor ? вот у тебя и получается, что cmd отрабатывает, а когда пытается считать буфер, нарывается на $prompt, который остался после твоего логина.
$t->print("123");
спасибо.
c ssh тоже попробую потом.
Оставить комментарий
Phoenix
хочется, чтобы @str содержала вывод команды show version, однако, она содержит то, что было выведено после ввода пароля и до приглашения.
однако, пока не выполнишь какую-либо команду, получить этот вывод не получается (например getlines вылетает по таймауту.)
подозреваю, что дело с буферизацией, но где имеено косяк, не пойму.