使用Perl进行telnet连接的“模式匹配读取eof”错误

时间:2012-08-08 10:24:46

标签: linux perl unix telnet

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

“模式匹配在perlscript.pl第23行阅读eof”

第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)

有什么可能导致此异常的想法吗?

1 个答案:

答案 0 :(得分:0)

#!/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);

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