1

perl で expect を使用して、ルーターからインターフェイス情報を取得しています。リモートルーターでコマンドを実行すると、そこにあるはずの約10〜15行が欠落しています。なぜ停止するのかわからない、何かアイデアはありますか?

#!/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";
}
4

2 に答える 2

0

ルーターを扱っているので、 Net::SSH::Expectのドキュメントが示唆するように raw_pty => 1 を有効にしたいと思います。また、->send + read_line の代わりに ->exec 呼び出しを使用する方が簡単かもしれません。

さらにデバッグするには、log_stdout を Net::SSH::Expect コンストラクターに渡し、問題が発生していることを検出できるかどうかを確認します。「use strict」をコメントアウトしたのはなぜですか? 常に「use strict」と「use warnings」

于 2013-10-09T00:51:37.133 に答える