2011-09-08 9 views
0

を要求すると私はリモートデバイスにコマンドを送信する必要があり、「CTRL + Cを押して中断し、他のキーを続行してください...」と尋ねるときは、リモートデバイスに「Enterキー」を押します。perl Net :: Telnetリモートノードが

私は以下のscritptに書きましたが、何とか動作しません。上記のスクリプトの

my $session = new Net::Telnet (
    Timeout => 30, 
    Prompt=> '/>/', 
    Input_log =>\*STDOUT 
); 
$session->open('device-id'); 
$session->login('admin','admin'); 

print "connected and logged in \n\n"; 
print "Kindly wait till output stored in FILE \n\n"; 

my @output1=$session->cmd('DSP PATCH:;'); 
if ($session->waitfor('/Press CTRL+C to break, other key to continue.../')) { 
    $session->print(''); # Assuming default is \n for print command 
} 

print @output1; 

出力は


connected and logged in 

Kindly wait till output stored in FILE 

. 

. 

some output of command send........... 

. 
Press CTRL+C to break, other key to continue... 

し、それがタイムアウトです。

どのように私のリモートデバイスが私が入力を押すように頼むまで入力ヒットを送信する任意のアイデア。

答えて

0

cmdメソッドはコマンドを送信し、プロンプトを待ちます。その代わりに、printwaitfor(返されたprematchを保存する可能性が高い)を使用してコマンドを実行するか、リモートメッセージでそのcmd呼び出しのプロンプトを上書きします。私は前者をすることをお勧めします。

+0

ありがとうhasturkunから撮影my $telnet = Net::Telnet->new(Timeout => 30,Errmode => 'return');

、あなたの提案に私は経由で入るヒットすることができました。スクリプトは....今、問題はどのようにすべての出力をファイルに保存するのですか?それは打ち込んだ後の出力を入力します... my @ output = $ session-> print( 'DSP PATCH :;'); while($ session-> waitfor( '/ continue /')){ プッシュ(@出力、$セッション - >プリント()); push(@出力、$ session-> waitfor( '/ continue /')); }誰かがSTDOUTに含まれるすべてのものを保存する方法を手助けするなら、私の問題は解決されます.... – Mahesh

+0

OK私はそれを手に入れました.... Input_log => \ * FILE1それはすべての出力をファイルハンドルFILE1に保存します。 ...........あなたの助けをたくさんありがとう...マセル – Mahesh

0

$session -> dumplog()をデバッグ目的でチェックしましたか?

はこれを試してみてください:: Here

関連する問題