Добрый день,
столкнулся со следующей проблемой: крайне редко удается выйти из top нажатием клавиши q, когда посылаешь нажатие с помощью expect. Причем если в цикле посылать нажатие q и мониторить результат, выйти может, как на 3-ий цикл, так и на 40-ой. Откуда такое поведение, и как это можно обойти?
expect - 5.44 tcl - 8.5
Ниже представлен скрипт, демонстрирующий проблему. Если заменить top на htop, то проблема исчезает. Все в этом случае работает безотказно.
#!/usr/bin/expect -f
set timeout 10
log_user 1
spawn bash
send -- "clear\r\n"
sleep 0.3
expect {
-re "@.*:.*$" {
send_user "INFO: Command line \r\n"
send -- "top -d 1 \r\n"
# send -- "htop -d 10 \r\n"
sleep 1
}
timeout {
send_user "Can't get command line\r\n"
exit -1
}
}
set timeout 3
expect { timeout { } }
send -- "q"
set timeout 10
expect {
-re ".*@.*:.*$" {
sleep 1
send_user "INFO: Command line (2) \r\n"
}
timeout {
send_user "Can't get command line (2)\r\n"
exit -1
}
}
send -- "clear\r\n"
send_user "Success\r\n"