我正在尝试打开一个 telnet 连接,执行一些命令,然后终止连接。我需要它运行大约 1000 次。该脚本在多次尝试后运行良好 [比如 23 - 25 次左右]。然后,我收到以下错误:
“模式匹配在 perlscript.pl 第 23 行读取 eof”
第23行对应代码
$tn->waitfor('/密码:/i')
。
出现这个错误后,如果我尝试手动打开 telnet 连接,我会得到一个错误:
“服务和队列已满,请稍后再来”
我想我收到第一个错误“模式匹配读取 eof”是因为 telnet 连接因“服务和队列已满”错误而终止。
我试图对问题进行更多调试,当我检查日志时,我遇到了这个错误:
2012 08 08 10:27:46 EDT:发生异常:
java.lang.NullPointerException
在 dtw.telnetd.net.Connection.close(Connection.java)
在 dtw.telnetd.net.ConnectionManager.cleanupBroken(ConnectionManager.java)
在 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);
这似乎对我有用,在发出注销命令之前将提示设置为空字符串
关于linux - 使用 Perl 的 telnet 连接出现 "pattern match read eof"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11862515/