使用 Perl 进行远程登录的 "pattern match read eof" 错误



我正在尝试打开一个telnet连接,执行一些命令,然后终止连接。 我需要它运行大约 1000 次。 脚本在某些尝试次数 [ 比如大约 23 - 25 ] 内运行良好 ]。然后,我收到以下错误:

"模式匹配在第 23 行读取 EOF perlscript.pl"

第 23 行对应于代码

$tn->waitfor('/Password: /i') .

出现此错误后,如果我尝试手动打开 telnet 连接,则会出现错误:

"服务和队列已满。请稍后再来"

我想我收到第一个错误"模式匹配读取 eof",因为 telnet 连接由于"服务和队列已满"错误而终止。

试图对问题进行更多调试,当我检查日志时,我遇到了此错误:


2012 08 08 10:27:46 EDT: Exception occured:
java.lang.NullPointerException
at dtw.telnetd.net.Connection.close(Connection.java)
at dtw.telnetd.net.ConnectionManager.cleanupBroken(ConnectionManager.java) at dtw.telnetd.net.ConnectionManager.run(ConnectionManager.java)

知道可能导致此异常的原因吗?

#!/usr/bin/perl
($user,$pass)=@ARGV;
use Data::Dumper;
%resp=();
use Net::Telnet ();
for (0..100) {
$tn=new Net::Telnet(Timeout=>10, prompt=>'/jamie@jenks:~$/');
$tn->open("jenks");
$tn->login($user,$pass);
@lines=$tn->cmd("uname -a");
$resp{$lines[0]}++;
$tn->prompt("//");
@bye=$tn->cmd("logout");
}
print Dumper(%resp);

这似乎对我有用,在发出注销命令之前将提示设置为空字符串

相关内容

最新更新