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:命令本身可能会附加到结果中。

请帮我解决这两个问题。同时我正在考虑恢复等待 - 打印组合。

谢谢。

4

0 回答 0