2017-01-04 3 views
0

Работа над скриптом с использованием Expect, и это дает мне нечетный вывод. Вот мой сценарий:Ожидание функции, ведущей странно

#!/usr/bin/expect 
cd ~/Downloads/ 
spawn /usr/sbin/program 
expect "Enter Username: " 
send "username\r" 
expect "Enter Password: " 
send "password\r" 

Мой стандартный вывод, что выглядит следующим образом:

Введите имя пользователя: Имя пользователя

имя пользователя

Введите пароль: главная @ Debian:/дома/Debian #

Он просто выходит из моей программы. Обычно, если я ввел неверный пароль, он снова подскажет мне. Я также смущен тем, почему он дважды печатал «имя пользователя».

+0

Прежде чем использовать ожидание, я предлагаю попробовать следующее: 'echo -e" имя пользователя \ npassword "|/usr/sbin/program' – Cyrus

+0

Посмотрите: [Ожидайте часто задаваемых вопросов: почему он отправляет одну и ту же строку дважды?] (http://expect.sourceforge.net/FAQ.html#q52) – Cyrus

+0

Это не сработало, он заморозил мой терминал – sullivnc

ответ

0

Если программа предназначена для запуска до завершения после ввода пароля, просто добавьте это в конце:

expect eof 

что следует подождать, пока не порождены окончания процесса и закрывается.

Смежные вопросы