2010-08-27 59 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秒,没有输出后结束。