1

Net::Telnetの cpan ドキュメントで述べたように:

すべての入力がバッファリングされている間、すべての出力がフラッシュされます。各オブジェクトには、独自の入力バッファーが含まれています。

ざっくり言うと、送信しているコマンドを出力、結果を入力としてバッファリングするということですか?

コマンドを送信して結果を受け取るための次のコードがあります。

sub sendCmd {
my $t = shift @_;
my $query = shift @_;
$t->buffer_empty;
print "Sending command $query to telnet target\n";
@out = $t->cmd(String => $query,Timeout => 70,
            Errmode => 'return',Prompt => '/#/');
push(@out, ${$t->buffer});
$t->buffer_empty;
return @out;
}

ここでの問題は、次のようなループがある場合です。

while(1)
{
    @res1 = sendCmd('cmd1');
    print @res1,"\n";
    @res2 = sendCmd('cmd2');
    print @res2,"\n";
}

これにより、しばらくの間、予想される交互の出力が得られますが、その後は次のようになります。

問題1:しばらくすると、cmd1の結果がcmd2の結果として表示され、その逆も同様であることがわかります。

問題 2 : コマンド自体が結果に追加されて表示される場合があります。

これらの問題の両方で私を助けてください。その間、waitfor - print の組み合わせに戻そうと考えていました。

ありがとう。

4

0 に答える 0