如何在shell脚本中输入密码?

Jee*_*tel 5 linux shell scripting expect

在shell脚本文件中,我使用了一些命令scp,make install这些命令会询问我的密码.

我运行一个shell脚本来编译一个大项目,一段时间后它会要求我输入密码scp.我需要等待该过程并在此之后给出密码.

我只想在没有交互的情况下通过shell脚本完成所有操作,那么如何避免在此处提示输入密码?

Kim*_*ais 8

简短的回答:不要

对SCP 使用公钥认证,sudo使用NOPASSWD指令进行make install


KAR*_*ván 5

我认为生成身份验证密钥更好,并使用此基于密钥的身份验证,而不是将纯文本密码写入脚本.

  • 这是在同一时间写的!感谢downvoting! (4认同)

Ale*_*lex 5

如果您不能使用ssh trust并且必须稍后在脚本中输入密码,请使用read -s -p "Password:" USER_PASSWORD以静默方式读取密码。然后export USER_PASSWORD,您可以创建一个期望脚本,避免将其显示在中ps

    #!/usr/bin/expect -f
    spawn scp some.file USER@otherhost:~
    expect "assword:"
    send -- "$env(USER_PASSWORD)\r"
    expect eof
Run Code Online (Sandbox Code Playgroud)