0

マシンにログインして終了するだけの次の単純な 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 =====================\n";
        $telnet = new Net::Telnet ( Timeout=>20, Errmode=>'die');
        print "$telnet\n";
        $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 "=================================================\n";
}

スクリプトは次のように終了します。

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.
    

何が問題なのかを調べるには、何を調べればよいか教えてください。

4

2 に答える 2

0

私が疑うのは、telnet プログラムがプロンプトを待っているということです。私は通常、以下の形式を使用してプロンプトを定義します。これにより、スクリプトは通常、以下の指定されたオプションからプロンプトを見つけることができます。

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

それでも問題が解決しない場合はお知らせください。

于 2012-09-27T20:58:36.737 に答える
0

この後、正常にログインできますか?接続が多すぎるため、この他のサーバーがあなたを切断していると思います。

于 2012-09-26T06:47:54.253 に答える