为在另一个脚本中调用的脚本开始提供密码

为在另一个脚本中调用的脚本开始提供密码

我编写了一个 shell 脚本,该脚本依次调用另一个脚本,但第二个脚本提示输入密码。我想提供密码并通过提示而不通知用户。

这是我的脚本:

su - s3 -c "su.sh"

我尝试过:

su - s3 -c "echo pass | su.sh"

但我收到一个错误:

standard in must be a tty

更新:

命令的屏幕截图。

在此输入图像描述

我也累了:

 su - s3 -c "echo mypass|sudo -S su.sh"

但出现另一个错误:

sudo: sorry, you must have a tty to run sudo

su.sh 命令:

if [ ! -n "$IS_WINDOWS" ]
then
   /bin/su root -c "...."
fi

答案1

看来你需要开一个普蒂。你可以试试socat:

echo pass | socat -  exec:su.sh,pty,stderr,su=s3,ctty

这样密码就不会出现在命令行参数中,这将是一个安全问题。

更好的选择是以su.sh不再需要密码的方式进行修改。

答案2

您可以使用预计程序在询问密码时提供响应。请注意,这也存在硬编码密码的安全问题,通常最好设置 sudo 规则来无密码执行命令。

相关内容