Проблема с захватом данных TCL — ожидание

#tcl #expect

#tcl #ожидайте

Вопрос:

Я хотел бы знать, как получить вывод предыдущей команды с помощью TCL.

Теперь у меня есть следующая структура:

 exp_send -i $spawn_id "show port-access supplicantr"

set buff ""
expect -regexp {".*"}
    expect -regexp ".*#" {send "show port-access supplicantr"}
expect eof
  

* Команда на этом этапе возвращает правильную информацию, но я не знаю, как сохранить ее в переменной.

Я читал о expect_out, но я не мог заставить его работать!

Ответ №1:

Для этого вы можете использовать ожидаемый буфер. Завершите свои 2 совпадения:

  expect -regexp ".#" {send "show port-access supplicantr"}
 expect -regexp ".#"; #Match the prompt again after the device output returns
  

А затем попробуйте:

  puts $expect_out(buffer)
  

Комментарии:

1. Привет, это то, что я получаю. Я получаю следующий вывод: 1234 — end Client_A # — 123 Client_A # Я использую «1234 — $ expect_out (buffer) — 123″… Я не знаю, почему я не получаю правильную информацию на выходе: Доступ к порту Статус просителя Статус просителя Удерживается Авторизация Запуск Максимальный период состояния порта Период ожидания запуска Идентификатор порта 1 Аутентификация 60 30 30 3 Пользователь @niall-byrne

2. Вся моя проблема — регулярное выражение.. Сейчас я настраиваю параметры, спасибо, что просветили меня!