Модуль Perl Telnet: проблема с Cd (смена каталога) - PullRequest
0 голосов
/ 12 августа 2011

Я пытаюсь использовать модуль Net :: Telnet для настройки автоматизации тестирования. Мой тест основан на изменении каталогов и выполнении теста.

Это код

use warnings;
use strict;
use Net::Telnet;

my $telnetObject = Net::Telnet->new(Timeout => 10);
$telnetObject->open("10.30.16.113");


$telnetObject->waitfor('/login/');
$telnetObject->print("john");
$telnetObject->waitfor('/{\d+}/');


#
my $fh = $telnetObject->input_log("output.txt");


$telnetObject->prompt('/{\d+}/');
$telnetObject->cmd_remove_mode(1); # omit command echo from output
$telnetObject->print('cd test/displayBlock');
my @lines2 = $telnetObject->waitfor('/{\d+}/');


print @lines2;

А вот и вывод журнала:

> 0x00000: 63 64 20 74  65 73 74 2f  64 69 73 70  6c 61 79 42  cd test/displayB
> 0x00010: 6c 6f 63 6b  0d 0a                                  lock..

< 0x00000: 63 64 20 74  65 73 74 2f  64 0d 3c 64  20 74 65 73  cd test/d.<d tes
< 0x00010: 74 2f 64 69  20 20 20 20  20 20 20 20  20 20 20 20  t/di            
< 0x00020: 20 20 20 20  20 20 20 20  20 20 20 20  20 20 20 20                  
< 0x00030: 20 20 20 20  20 20 20 20  20 20 20 20  20 20 20 20                  
< 0x00040: 20 20 20 20  20 20 20 20  20 20 20 20  20 20 20 20                  
< 0x00050: 20 20 20 20  20 20 20 20  20 20 20 20  20 20 20 20                  
< 0x00060: 20 20 20 0d  3c 64 20 74  65 73 74 2f  64 69 73 70     .<d test/disp
< 0x00070: 6c 61 79 42  6c 6f 63 6b  0d 0a                     layBlock..

< 0x00000: 3c                                                  <

По какой-то причине время ожидания истекает при последней команде waitfor.

Пожалуйста, помогите: (

Спасибо

1 Ответ

0 голосов
/ 26 декабря 2011

Я думаю, что основная проблема заключается в том, что вам не хватает возврата каретки (\ r)


Обычно, когда вы взаимодействуете с терминалом, таким как telnet, вы заметите, что каждый раз, когда вы нажимаете клавишу, терминал отображает клавишу, используя символ ascii. Если вы используете такую ​​программу, как screen, и включаете ведение журнала, вы действительно можете увидеть, что ключ возврата будет отображаться с помощью \ r \ n. Вот как вы решите эту проблему.

$telnetObject->prompt('/{\d+}/');
$telnetObject->cmd_remove_mode(1); # omit command echo from output
$telnetObject->print('cd test/displayBlock\r');

Спасибо Надеюсь, что это поможет

...