linux - 使用 Perl 的 telnet 连接出现 "pattern match read eof"错误

标签 linux perl unix telnet

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

相关文章:

linux - 在 linux 内核模块中,如何获取已知路径的 inode

linux - 在所有子目录中的特定文件上运行脚本

Unix 变量最佳实践 : Should variable containing a path end in a slash

perl - 如何在perl中检查文件是否存在并重命名

perl - 试图在 Perl 中将子目录作为参数传递

shell - 如何防止 Fish shell 在键入 Ctrl-D (EOF) 时关闭

unix - 排他锁和共享锁有什么区别?

linux - 如何为 "SSH access without a password"配置远程服务器?

c++ - crtbegin.o、crtbeginT.o 和 crtbeginS.o 之间有什么区别?

mysql - 连接到远程服务器时无法在 perl 中执行 mysql 查询