我在perl中使用期望從我的路由器獲取接口信息。當我在遠程路由器上運行命令時,應該在那裏丟失大約10-15行。不知道爲什麼它停止,有什麼想法?Perl Net :: SSH ::期望不打印出所有預期的輸出
#!/usr/bin/perl -w
#use strict;
use warnings;
use Net::SSH::Expect;
my $ssh = Net::SSH::Expect->new (
host => "10.10.10.10",
user => 'user',
password => 'pass'
);
my $login_output = $ssh->login();
if ($login_output !~ /router#/) {
die "Login has failed. Login output was $login_output";
}
#$ssh->run_ssh() or die "SSH process couldn't start: $!";
$ssh->send("show int g2/1");
my $line;
while (defined ($line = $ssh->read_line())) {
print $line."\n";
}
是否有可能'read_line()'是即使路由器將是第二次以後發送的詳細信息,缺省爲1秒後超時? – geoffspear
我不這麼認爲,它會打印出線條然後停下來停下來。我嘗試添加一個超時變量,但沒有骰子... – user2859077
1.是否捕獲到STDERR?如果您直接ssh到路由器並運行'show int g2/1>/dev/null'。還有什麼東西仍然印在屏幕上? 2.輸出是否在不同的線路上使用不同的端子? –