#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. Вся моя проблема — регулярное выражение.. Сейчас я настраиваю параметры, спасибо, что просветили меня!