2017-02-17 83 views
0

我有一個Perl腳本,通過Net :: Telnet在遠程設備上運行一些命令。有時候,telnet會話會被遠程方斷開,因爲登錄超時或其他原因。我想知道如何在發送下一個命令之前檢查telnet會話是否仍然有效?非常感謝!如何檢查Net :: Telnet會話仍然在Perl中?

my $tc = new Net::Telnet{Host=>$host,Port=>23}; 
sub checkTelnetLive { ??? } 
my @commands=($cmd1,$cmd2,...); 
foreach $cmd(@commands) { 
    if checkTelnetLive { 
     $tc->put($cmd); 
     $tc->waitfor('/COMPLD/'); 
    } 
    else { 
     die "Remote equipment has disconnected session." 
    } 

} 
+0

** TIMED_OUT - 超時指示**'$布爾= $ obj-> TIMED_OUT;''$分組= $ obj-> timed_out($布爾值);'_此方法指示以前的讀取,寫入或打開方法是否超時。請記住,超時本身就是一個錯誤。爲了能夠在超時錯誤後調用timed_out(),必須將默認錯誤模式更改爲「die」以外的其他模式。參見errmode()。 如果先前的方法超時,則不帶參數,此方法返回1。用參數設置指標。通常,只有內部方法設置此指標._ – AbhiNickz

回答

0
my $tc = new Net::Telnet (Host=> $host, Port=>23, Errmode => 'return'); 

,或者您可以使用eval

eval { 
     my $tc = new Net::Telnet (Host=> $host, Port=>23, Errmode => 'return'); 

#. plus other code 
}; 
warn [email protected] if [email protected];