我正在使用的telnet主机没有提示符(当它完成时它只是进入空白换行符),那么,我应该如何使用Net::Telnet
perl模块?
我尝试将提示设置为// '' /\s/
或/\s*/
没有一个有效。
''
错误地说它无效,// /\s/
和/\s*/
只是超时。
my $t = new Net::Telnet (Timeout => 10, Prompt => '/\s*/');
编辑:这种连接很好,但是当它尝试发出命令时,它会因为无法识别提示而超时。;
答案 0 :(得分:4)
如果无法让远程端发出提示,则无法使用cmd
或login
,因为它们依赖于提示知道命令何时完成。
您可以使用$telnet->print('command')
发出命令。如何读取输出取决于您期望识别输出结束的方式。
如果最后一行有一些可识别的模式,您可以在列表上下文中使用waitfor
。
如果您知道将有多少行输出,您可以使用getline
,并阅读那么多行。
在最坏的情况下,我可能会使用getline
超时,并假设命令在N秒后没有输出完成。