使用rc.local回应密码命令

时间:2016-06-06 19:41:32

标签: linux bash rhel7 startupscript non-interactive

我们有一个命令来处理我们的RHEL7服务器加入到Sudo的Privilege Manager,当从rc.local脚本运行时,该服务器无效。下面的命令包含更多通用名称,而不是我们的特定资产。

回显“密码”| / opt / quest / sbin / pmjoin_plugin -b -a -v -q -d masterport = 12345 -d FailOverTimeOut = 10 -d selecthostrandom = YES somehostname.com someotherhostname.com>> /var/log/Build.log

手动或从其他bash脚本运行时的命令工作到完美,但是当它从rc.local中执行时,就好像在提示输入密码时密码没有通过管道输入到命令中。

我读过一些建议,例如“普利茅斯退出”,但没有帮助。

有任何人在rc.local脚本中以这种方式“回显”命令的密码,以便您可以继续通过提示输入密码的交互式脚本吗?

最终,这只是我们想要在首次启动实例时运行的内容。因此,如果有另一种方法让shell脚本在启动时运行一次,然后在没有rc.local的情况下删除自己,那么我们也可以探索该路由(crontab等?)。

1 个答案:

答案 0 :(得分:0)

我最终实施了适用于我的情况的解决方案。虽然它不像只是让事情在rc.local中运行一样干净,但它可以完成任务。

我从rc.local脚本中取出命令并将其放入自己的.sh脚本中。我们的AMI构建过程将它存储在/tmp/nameofscript.sh中,我还创建了一个系统服务文件,AMI进程存储在/etc/systemd/system/nameofservicefile.service中。该服务文件在其中执行ExecStart = / tmp / nameofscript.sh,以便在重新启动时运行。我们的rc.local以阶段1和阶段2的方式运行,最后阶段1重新启动,所以我在阶段1部分添加了一行以使用" systemctl enable nameofservicefile.service"来启用服务。就在重新启动之前,这是第一阶段的最后一步。

使用此路线启用它,以便PM Sudo join命令在我们的"阶段2"自#34; phase1"结束后重启的步骤从systemd服务触发脚本。

为了确保它不会在每次重新启动时运行,我的/tmp/nameofscript.sh脚本已经执行了rm -f /etc/systemd/system/nameofservicefile.server并使用rm删除自身 - &# 34; $ 0#34;

这可能是一种混乱的方式,但完成工作。