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

use*_*171 3 passwords ssh bash expect

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

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

我的代码如下所示:

#!/bin/sh

PASS=mypassword

/usr/bin/expect -c "
spawn python Tools/python/install.py
expect -nocase \"password:\" {send \"$PASS\r\"; interact}
"
Run Code Online (Sandbox Code Playgroud)

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

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

gle*_*man 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
'
Run Code Online (Sandbox Code Playgroud)

清理过的shell也引用了一点.

  • @ user788171,只需删除`interact`行. (2认同)