bash:确实期望使用多个密码提示吗?

时间:2012-07-23 03:34:01

标签: bash ssh passwords expect

我目前正在使用expect传递密码,因此我的脚本可以自动运行,而不必坐下来并反复输入相同的密码。

重要提示:请不要评论这是多大的安全风险或者我应该如何使用ssh密钥,我会尽可能使用这些,但我必须使用的设置不允许。

我的代码如下所示:

#!/bin/sh

PASS=mypassword

/usr/bin/expect -c "
spawn python Tools/python/install.py
expect -nocase \"password:\" {send \"$PASS\r\"; interact}
"

我遇到的问题是install.py会提示输入相同的密码十几次,看来只会自动填写第一个提示的密码。

有没有办法修改行为,使其填写密码全部12次,而不仅仅是第一次?

1 个答案:

答案 0 :(得分:7)

你必须做一点编程。幸运的是答案非常简单:

#!/bin/sh

PASS=MyPassword
export PASS

/usr/bin/expect -c '
    spawn python Tools/python/install.py
    expect {
        -nocase "password:" {
            send "$env(PASS)\r"
            exp_continue
        }
        "somthing_else_that_indicates_you're_ready_to_interact"
    }
    interact
'

清理外壳也引用了一点。