我使用 SSH2 模块已经有一段时间了,发现它工作得很好。我总是觉得困难的部分是告诉返回的数据何时完成。例如,我在互联网上找到的这段代码
my $ssh2 = new Net::SSH2();
$ssh2->connect('127.0.0.1') or die $!;
$ssh2->auth_password('bob', 'smith');
if(!$ssh2->auth_ok()) { die $!; }
my $channel = $ssh2->channel();
$channel->shell();
print $channel "ls -l\n";
while(<$channel>)
{
print $_;
}
这似乎“知道”何时到达流的末尾,因为一旦返回最后一行,它就会立即返回。我想知道的是它是如何知道数据已经完成的?提示没有返回,所以我猜它会寻找提示。如果其他东西返回一个看起来像提示的字符串会发生什么?它会停止吗?