3

我目前正在使用 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 次,而不仅仅是第一次?

4

1 回答 1

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
'

也清理了shell引用。

于 2012-07-23T16:00:10.423 回答