LINUX.ORG.RU

Проблема при работе с top через expect


0

1

Добрый день,

столкнулся со следующей проблемой: крайне редко удается выйти из 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"

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.