Perl Net :: Telnet нажмите Enter, если удаленный узел запрашивает - PullRequest
0 голосов
/ 08 сентября 2011

У меня было требование отправить команду на удаленное устройство, и всякий раз, когда он запрашивает «Нажмите CTRL + C, чтобы прервать, другой ключ, чтобы продолжить ...», я должен снова отправить «Enter key» на удаленное устройство.

Я написал ниже сценарий, но почему-то он не работает.

my $session = new Net::Telnet (
    Timeout => 30, 
    Prompt=> '/>/', 
    Input_log  =>\*STDOUT
);
$session->open('device-id');
$session->login('admin','admin');

print "connected and logged in \n\n"; 
print "Kindly wait till output stored in FILE \n\n";

my @output1=$session->cmd('DSP PATCH:;');
if ($session->waitfor('/Press CTRL+C to break, other key to continue.../')) {
    $session->print('');   # Assuming default is \n for print command
}

print @output1;

Вывод приведенного выше сценария:


connected and logged in

Kindly wait till output stored in FILE

.

.

some output of command send...........

.
Press CTRL+C to break, other key to continue...

и время ожидания.

Любая идея, как отправить ввод, пока мое удаленное устройство не попросит меня нажать ввод.

Ответы [ 2 ]

0 голосов
/ 08 сентября 2011

Вы проверяли, используете ли $session -> dumplog() для целей отладки?

Попробуйте это :: my $telnet = Net::Telnet->new(Timeout => 30,Errmode => 'return');

Взято из Здесь

0 голосов
/ 08 сентября 2011

Метод cmd отправляет команду и ожидает приглашения.Вместо этого либо выполните команду, используя print и waitfor (скорее всего, сохранив возвращенный предварительный матч), либо переопределите приглашение для этого вызова cmd удаленным сообщением.Я бы предложил сделать первое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...