Bash 仅在SLES 12中的第一个根登录上运行脚本

Bash 仅在SLES 12中的第一个根登录上运行脚本,bash,shell,root,sles,Bash,Shell,Root,Sles,我正在尝试将我的SLES 12系统设置为仅在SLES 12系统的第一个根登录上运行脚本。此后,root将不再运行该脚本。另外,我不希望任何非root用户运行此脚本 有人对我如何做到这一点有什么想法吗 提前感谢。一种方法是使用标志文件和测试条件 script_function() { # what your script does } if [ -e /root/.flagfile ] then : # do nothing else script_function touch /r

我正在尝试将我的SLES 12系统设置为仅在SLES 12系统的第一个根登录上运行脚本。此后,root将不再运行该脚本。另外,我不希望任何非root用户运行此脚本

有人对我如何做到这一点有什么想法吗


提前感谢。

一种方法是使用标志文件和测试条件

script_function()
{
# what your script does
}

if [ -e /root/.flagfile ]
then
  : # do nothing
else
  script_function
  touch /root/.flagfile
fi

然后,将脚本放在您的profile.d或.bash_登录中,仅限root用户使用。

如果脚本仅执行一次是必要的,则存在意外删除标志文件的风险,请触发在下次登录时重新运行。作为替代,考虑翻转条件,并可能使脚本不可执行,以防万一。

在系统配置期间,使用“/path/to/script”创建可执行文件“~root/run once.sh”

然后在/etc/profile中

if [ -x ~/run-once.sh ] ; then
    source ~/run-once.sh
    # Disable re-run with
    rm ~/run-once.sh
    # OR
    chmod -x ~/run-once.sh
fi
作为一个副作用,这种方法可以在需要时强制其他用户一次性登录