期望脚本没有正确发送密码

时间:2016-04-20 13:42:57

标签: mysql bash shell tcl

这是最终目标:使用expect脚本执行mysql命令以在出现提示时发送密码。共有3个文件

  1. test.sh
  2. test1.sh
  3. test.exp来
  4. 以下是代码:

      

    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命令时发送密码的expect脚本)

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

    我运行expect test.exp的结果是我只看到提示符:

    Enter password:
    

    任何专家都可以帮我看看出了什么问题?这肯定意味着test1.sh已经成功运行,而且我已经尝试了很多次,包括只使用静态密码。仍然只是提示。

    非常感谢!

1 个答案:

答案 0 :(得分:1)

为了使程序可以通过expectsend进行互动,您需要使用spawn而不是exec启动它。试试这个:

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