我正在尝试打开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)
有什么可能导致此异常的想法吗?
答案 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命令之前将提示符设置为空字符串