ожидание: последовательность ожиданий - PullRequest
0 голосов
/ 05 октября 2010

Я пытаюсь автоматизировать взаимодействие с удаленным устройством через telnet, используя ожидаемое.В какой-то момент устройство генерирует вывод, подобный этому:

;
...
COMPLETED
...
;

Мне нужно, чтобы мой скрипт завершился после ключевого слова «COMPLETED» и второго «;найдены.Однако все мои попытки терпят неудачу.Скрипт либо выходит после первой комы, либо вообще не выходит, зависает.Пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 07 октября 2010

Ожидаются работы.

Я подчеркиваю это, потому что facha уже написал «что [скорее всего, обновленный скрипт, а не сам Expect] не сработал» один раз. В Expect очень мало сбоев, но большинство программистов и администраторов настолько незнакомы, что может быть трудно понять, как именно с ним разговаривать. Совет Гленна

expect -re {COMPLETE.+;}

и

exp_internal 1

(или -d в командной строке и т. Д.) Идеально подходит для цели: из всего, что я знаю, это именно первые два шага, которые необходимо предпринять в этой ситуации.

Я немного поразмышляю: на основании предоставленных доказательств мне интересно, действительно ли ожидаемые совпадения даже дойдут до сегмента COMPLETE. Кроме того, имейте в виду, что, если устройство, с которым вы общаетесь по телефону, достаточно короткое, даже что-то столь невинно выглядящее, как «ЗАВЕРШЕНО», может фактически включать управляющие символы. В таких случаях вы надеетесь лишь прибегнуть к таким методам отладки, как exp_internal или autoexpect .

1 голос
/ 05 октября 2010

Как насчет: expect -re {COMPLETED.+;}

...