Я очень плохо знаком с обоими Perl и ожидаю, и пытался выяснить, как отправить команду, когда появляется только приглашение. Я знаю, как отправить команду после отображения определенного вывода в терминале, но не могу найти правильный способ отправки команды, когда предыдущая команда не имеет определенного c сообщения об успехе, поэтому единственное строка после команды является подсказкой. Код, который я пытался использовать, был:
$exp->expect($timeout,
[$user."@".$host, sub{my $self = shift;
$self -> send(the command I want to send);
exp_continue;}],
$GW);
$ user. "@", $ Host представляет приглашение в терминале, но, как вы могли догадаться, Команда постоянно отправляется, как только команда отправляется, снова появляется приглашение, поэтому команда отправляется снова, поэтому программа застревает в бесконечном l oop. Я пытался изменить exp_continue на exit , но это означало, что вся подпрограмма перестала работать по какой-то причине. Я также пытался изменить exp_continue на exp_continue_timeout и добавить операторы сна в подпрограмму, но это не остановило бесконечное l oop.
I ' Мы также пытались использовать только
sleep(5);
$exp->send(command);
, но это просто отправляет команду в случайное время и не ждет, пока предыдущая команда завершится sh. Этот метод является единственно возможным или существует метод, который ожидает появления приглашения, но отправляет команду только один раз?