【发布时间】:2020-11-30 16:11:26
【问题描述】:
我正在编写 shell 脚本来自动执行一些任务。我正在登录远程服务器并安装一些软件包。 但是要安装,我需要获得 root 访问权限。 我可以使用带有 ssh 密钥的凭据登录。 登录后,我需要切换到 root,然后它会要求输入密码。我尝试使用 echo 它仍然要求输入密码。
SCRIPT="pwd; ls; echo 'rootpass' | su -; cd ~; pwd; yum -y install <package>"
如何在提示时传递密码。 我需要保持相同的会话,所以不确定 spawn/expect/send 是否会起作用。
更新: 我尝试使用 printf 'rootpass' | ./script.sh,但它不起作用。
【问题讨论】:
-
考虑使用 sudo 安装包
-
用户不能成为 sudoer 的一部分,所以我们不能添加它。我们想从变量中读取它并在出现提示时将其传递。
-
通常,您配置
sudo以便用户无需密码即可运行yum -y install(更重要的是,没有或很少其他命令)。 -
改为查看
expect。 -
安全方面,这很糟糕,非常糟糕。这意味着您必须将 root 密码存储在原始服务器上的某个位置才能将其发送到远程服务器。
sudo是可行的方法,因为它允许您限制可以使用的命令以及保护 root 密码。