对于我的任务,我有一组4个脚本,每个脚本调用另一个脚本。它们必须是不同的冗余脚本(但是一个调用另一个)。目前,任何脚本都可以使用bash命令运行。要运行任务,我运行第一个脚本,然后调用第二个脚本,依此类推。
有没有办法可以将密码应用到第二,第三和第四个脚本,只有在有人试图打击它们时才会应用这些脚本?
所以基本上没有密码,如果我运行第一个脚本(当它调用其他脚本时,不需要密码),但是如果我尝试运行第二个脚本(或第3个或第4个)它会问我密码。
我想我可以将密码保存到文件中并从第二个和第三个脚本调用该文件,但有更简单的方法吗?
答案 0 :(得分:2)
选择可能未设置的参数。 (PASSWORD_TO_RUN_SUBSCRIPTS
可能是一个不错的选择。在第一个脚本的最开始,添加
export PASSWORD_TO_RUN_SUBSCRIPTS=1
(实际值并不重要,只要你将其设置为某种东西)。
在每个下标中,只需检查是否设置了PASSWORD_TO_RUN_SUBSCRIPTS
,如果不是,则退出。 bash
参数扩展为此提供了一个有用的运算符:
: ${PASSWORD_TO_RUN_SUBSCRIPTS:?Script may only be run from within script1}
更便携的版本
if [ -z "$PASSWORD_TO_RUN_SUBSCRIPTS" ]; then
printf "Script may only be run from within script1\n"
exit
fi
如果您尝试在不给PASSWORD_TO_RUN_SUBSCRIPTS
值的情况下运行任何下标,它将退出并将给定消息打印为标准错误。
要显式运行下标,您可以执行类似
的操作PASSWORD_TO_RUN_SUBSCRIPTS=1 script2
“欺骗”script2
认为它在正确的环境中运行。
答案 1 :(得分:1)
无论你如何处理密码位(在脚本中硬编码或者如你所提到的那样)我在这种情况下想出如何调用脚本的方法是使用$ PPID告诉你在父进程的pid中,您可以使用该pid来执行PS并确定调用方的名称是否正确(而不是shell),然后决定是否需要输入密码。
希望这有助于揭示情况