Telnet自动化脚本有时会失败 [英] telnet automation script fails sometimes

查看:0
本文介绍了Telnet自动化脚本有时会失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在运行以下简单的telnet脚本,该脚本只需登录到计算机并退出。

相同的脚本在一台Linux服务器上运行良好(经过1000次迭代),但在另一台Linux服务器上失败(持续失败)(比方说在200次尝试后失败)。

在失败情况下,失败所需的迭代次数各不相同,但失败是持久的。

#!/usr/bin/perl
use Net::Telnet;

my $loop = 0;
my $dumpfile = "dump.log";
my $inputfile = "input.log";

for ($loop =1; $loop <=1000; $loop++) {
        print "===============Loop: $loop =====================
";
        $telnet = new Net::Telnet ( Timeout=>20, Errmode=>'die');
        print "$telnet
";
        $telnet->open('sys-007');
        $telnet->dump_log($dumpfile);
        $telnet->input_log($inputfile);
        $telnet->waitfor('/login: $/i');
        $telnet->print('root');
        $telnet->waitfor('/Password:$/i');
        $telnet->print('007');
        sleep 2;
        $telnet->print('exit');
        print "=================================================
";
}

脚本退出时显示:

pattern match read eof at ./telnettest.pl line 15 (i.e, waitfor('/login: $/i'); Line)

我尝试了以下操作,以查看问题出在哪里:

  1. 在客户端计算机中:(sys-007)

    tcpdump -nvvv -w test.txt host <Server IP>
    

字符串test.txt有:

成功尝试日志:

sys-007 (ttyp0)
^Fl$4
^!^Fl$
login: 
^Fl$4
^Fl$4
root
^(^Fl*
root
bP"u
^Fl*4
bP5u
^.^Fl*
Password:
^Fl*4
^Fl*4
007
^7^Fl6
^Fl64
^9^Fl6
Terminal type? [xterm] 
^Fl64
^Fl64
exit
^Fl<4
^Fl<
exit
^Fl<

尝试失败:

sys-007 (ttyp0)
*^hn
+^hn

未登录:提示!

  1. 在服务器计算机:(Linux服务器)

    [telnet@server]~% netstat --inet -a | grep telnet | grep sys-007
    
    There are no TIME_WAIT or CLOSE_WAIT sockets.
    

请告诉我应该查找什么才能找出哪里出了问题。

推荐答案

我怀疑Telnet程序正在等待提示。我通常使用下面的格式来定义提示符,这样脚本通常能够从下面给定的选项中找到提示符。

test  = new Net::Telnet (Timeout => 3000 , Prompt => '/[%#$>?:] $/' );
$test->open($IPAddress1);
$test->login($Login,$Password1);
my @input=$test->cmd("uname -a
");
print "Connected to : @input";
@input=$cmd->cmd("pwd
");

如果您仍面临此问题,请让我们知道。

这篇关于Telnet自动化脚本有时会失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆