Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Другие языки > [Tcl] expect timeout


Автор: boombick 22.6.2007, 13:11
Ситуация следующая. Есть код на tcl, который соединяется по телнету с удаленным хостом (на хосте linux) и выполняет там команду.. Все это проходит в два этапа: сначала выполняется соединение, его id кладется в глобальную область видимости. Затем этот id используется для других команд.
Проблема вот в чем: само соединение проходит отлично. Затем пытаюсь выполнить команду и забрать вывод. И вылетаю с таймаутом, хотя и с полученным выводом... Но неприятно, вылетает ошибка. Причем проблема эта наблюдается не везде. Локализовать проблему в зависимости от удаленной ОС не получилось...
код выполнения команды:
Код

send -i $id  "$cmd\r" ;# $id - соединение, $cmd - команда. в моем случае это wc -l filename

expect  {
            -i $id -re $Prompt {
                append buf $expect_out(buffer) 
                return $buf
            }
 
            full_buffer {
                    append buf $expect_out(buffer)
                    exp_continue
            }

            timeout { ;# ВОТ СЮДА МЕНЯ ПОСТОЯННО ВЫВАЛИВАЕТ!
                    expect -i $id *
                    append buf $expect_out(buffer)
                    send_error "EXECMD2: command timeout -- $timeout sec\n"
                    return $buf
            }

            default {
                    expect -i $id *
                    send_error "Command: Unknown Error!\n"
                    send_error "Buffer: $expect_out(buffer)\n"
                    return $expect_out(buffer)
            }


}

в чем может быть проблема? какие уточняющие подробности нужны?

Автор: boombick 22.6.2007, 13:53
Проблема решена при помощи exp_internal =)

Автор: lumen 3.4.2009, 08:45
а подробней можно, описать что вы сделали

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)