Я пытаюсь выполнить команду через скрипт Perl с помощью telnet, кажется, что приведенный ниже сценарий способен успешно войти в систему, но не может выполнить команду. Я не могу найти правильное регулярное выражение, которое будет ждать подсказки >
перед выполнением команды.выполнить команду telnet через perl-скрипт
Вот изображение результата при входе нормально телнетом:
#!/usr/bin/perl
use strict;
use warnings;
use Net::Telnet;
my $remote_host = 'myrouter';
my $telnet = new Net::Telnet (Timeout=>10 ,Input_log => "received_data.txt");
$telnet->open($remote_host);
$telnet->waitfor('/ADSL2PlusRouter login:/i');
$telnet->print('mylogin');
$telnet->waitfor('/Password:/i');
$telnet->print('my_password');
$telnet->waitfor('/-*>/');
$telnet->cmd("adsl show");
$telnet->print('exit');
Кажется, что шаблон соответствует, но он говорит, что команда тайм-аута в строке telnet.pl 25 (см. Это регулярное выражение promt), и результат: --------------- -------------------------------------------------- ------- > a это похоже на то, что он набирает первый символ команды, и он приостанавливает –
@sam похоже, что это не соответствует. Вы пробовали мои? Я не знаком с тем, как работает Net :: Telnet, и у меня нет маршрутизатора, который можно попробовать. – simbabque
Кажется, это совпадение взгляните здесь http://postimg.org/image/63j44gu5t/ это первый символ cmd «adsl show», это экран печати логарифма put received_data.txt –