Ожидайте время ожидания отправки, когда буфер большой из переполнения стека

Это часть моего сценария Expect. Я запускаю его со страницы PHP!

#!/usr/local/bin/expect -f
set timeout 10
set olt [lindex $argv 1]
exp_send "show gpon onu baseinfo $olt\r"expect {
"*Error*" { send_user "\nInterface Invalida\n"; exit 1 }
"#"}
puts "$expect_out(buffer)"

Когда «show» возвращает несколько строк, код работает нормально. Но когда он возвращает более 20 строк, я получил это сообщение:

can't read "expect_out(buffer)": no such variable
while executing puts "$expect_out(buffer)

Это сообщение появляется только при запуске с моего сайта в php, как указано выше:

 $result = exec("./cmd $olt 2>&1", $output, $return_var );

cmd — это скрипт, который содержит ожидаемый код выше.

Любая идея?

Большое спасибо!

0

Решение

Я нашел решения … часы и часы поиска ….

set NewLineChar "\r"exp_send "show gpon onu baseinfo $olt\r"expect {
$NewLineChar { append saida $expect_out(buffer); exp_continue }
"*Error*" { send_user "\nInterface Invalida\n"; exit 1 }
"#"}

🙂

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]