Ожидаемые сценарии не могут совпадать

Я использую Community Edition ActiveTcl от ActiveState в Windows с установленным пакетом Expect. Я пробовал писать свои собственные сценарии, загружать некоторые из них с разных веб-сайтов и даже копировать и вставлять их с самого веб-сайта ActiveState, но всегда сталкивался с одной и той же проблемой. Мои сценарии могут отлично отправлять команды и настраивать сетевые устройства, как и ожидалось, но только путем сэндвича отправки с периодами сна. Всякий раз, когда я пытаюсь сопоставить что-либо с ожидаемым, я всегда получаю одно и то же (при использовании exp_internal 1): ожидаемое: соответствует ли "" (spawn_id exp4) шаблону glob "AnyString"? нет. И то же самое для регулярных выражений: ожидаем: соответствует ли "" (spawn_id exp4) регулярному выражению "AnyString"? нет. Единственный раз, когда это работает, это с одним подстановочным знаком: ожидаем: соответствует ли "" (spawn_id exp4) шаблону глобуса "*"? yes expect: set expect_out(0,string) "" expect: set expect_out(spawn_id) "exp4" expect: set expect_out(buffer) "" Но никакая другая комбинация подстановочных знаков, литералов или регулярных выражений, похоже, не работает. Я смотрел видео и видел скриншоты. Из того, что я могу сказать, следует ожидать, что следует повторять каждый символ до тех пор, пока не будет найдено совпадение, но буквально просто останавливается на "", истечет время ожидания и переходит к следующей строке. Я уверен, что делаю что-то явно в корне неправильное, если команда expect не работает в Expect, но я просто не знаю что. Как будто он не может прочитать вывод терминала, но команды отправки работают отлично, поэтому я знаю, что он подключен. Какую бы терминальную программу я ни пробовал (telnet, plink, netcat и т. д.), у всех одна и та же проблема. Expect действительно кажется отличным инструментом автоматизации, поэтому я был бы очень признателен за любые предложения, которые могли бы помочь мне справиться с этим. Я полностью ожидаю чувствовать себя глупо после получения ответа.


person Aerasol    schedule 17.12.2016    source источник


Ответы (1)


Вероятно, это связано с известными проблемами с Expect в более поздних версиях Windows, которые, к сожалению, плохо документированы. Ожидайте, что может работать на Win7 или Win8, возможно, не на Win10. Обычно он лучше работает в 32-битной Windows, чем в 64-битной.

person Tom Radcliffe    schedule 17.12.2016