2010-08-27 34 views
1

Telnet主機我使用不具有提示字符,(它只是進入,當它完成一個空白行),然後是如何,我應該使用telnet殼Net::Telnet perl模塊?的perl的Net ::遠程登錄模塊沒有提示字符

我想提示設置,其中工作// '' /\s//\s*/沒有。

''給出錯誤說它是無效的,並且// /\s//\s*/只是超時。

my $t = new Net::Telnet (Timeout => 10, Prompt => '/\s*/'); 

編輯:這會連接很好,但是當它試圖超時發出命令,是因爲它不承認的提示;

+0

確實/^$ /工作? – hlynur 2010-08-27 04:34:42

+0

@hlynur,不,因爲這會匹配_every_行的輸出。僅僅因爲你還沒有收到更多的產出並不意味着它不會到來。 – cjm 2010-08-27 09:49:31

回答

4

如果您無法讓遠程端發出提示,您將無法使用cmdlogin,因爲它們取決於提示,以瞭解命令何時完成。

您可以使用$telnet->print('command')發出命令。如何讀取輸出取決於您期望如何識別輸出的結尾。

如果有就上線了一些識別的模式,你可以在列表上下文中使用waitfor

如果您知道有多少行輸出,您可以使用getline,並閱讀許多行。

在最壞的情況下,我可能會使用getline以超時,並且假設命令N秒,沒有輸出後結束。