2016-04-20 4 views
0

Это конечная цель: выполнить команду mysql с помощью сценария ожидания для отправки пароля при появлении запроса. Есть 3 файлов в общейожидать, что скрипт не правильно отправил пароль

  1. test.sh
  2. test1.sh
  3. test.exp

Вот коды:

test.sh (возвращает пароль, который необходим для подключения к базе данных mysql)

grep hibernate.connection.password /opt/cisco/cpam/properties/vx.hibernate.properties | sed 's/hibernate.connection.password=//g' 

test1.sh (команда MySQL, которая должна быть та или иная строчка)

mysql -u cpam -p --protocol=tcp vxdb < /opt/cisco/cpam/import/MySQL_Views.sql 

test.exp (ожидать скрипт, который отправляет пароль при выполнении команды MySQL)

set password [exec ./test.sh] 
exec ./test1.sh 
expect "Enter password: " 
send "$password\r" 
expect eof 

Результат выполнения работы ожидается test.exp в том, что я вижу только приглашение:

Enter password: 

Любой специалист может предоставить мне руку, чтобы узнать, что происходит не так? Это означает, что test1.sh успешно запущен, а также я много раз пробовал, включая использование только статического пароля. Все еще просто подсказка.

Спасибо!

ответ

1

Для того, чтобы программа, чтобы быть interactable-с помощью expect и send, вам нужно запустить его с spawn и не exec. Попробуйте следующее:

set password [exec ./test.sh] 
spawn ./test1.sh 
expect "Enter password: " 
send "$password\r" 
expect eof 
+0

Я чувствую себя исключительно глупым .. Спасибо – Tony

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