2

我正在尝试打开一个 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)

关于可能导致此异常的任何想法?

4

1 回答 1

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

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

于 2013-04-01T20:35:55.893 回答