如何为数百个用户自动启动相同的脚本?

如何为数百个用户自动启动相同的脚本?

我的服务器上有数百个用户需要启动相同的脚本(https://sourceforge.net/projects/igcc/)在他们登录时自动进行。我应该在他们每个人的主目录中放置一份脚本副本吗?

答案1

将脚本放在用户的主目录中并没有帮助,您仍然需要某种方法来运行它。

将脚本(或其链接)放在某个合理的目录中,然后让全局 shell 启动文件之一运行该工具(如果用户位于给定组中)。要在登录时运行,您可以在大多数系统上使用/etc/profile或 文件/etc/profile.d/。然后你可以用这样的方法测试组成员身份:

if id | grep -qwF specialgroup; then
    /path/to/specialtool
fi

Linuxid上的 会打印类似的内容...groups=1000(blah),4(adm),20(dialout),24(cdrom),25(floppy)...grep -w查找全字匹配。只要您的组名称仅包含编程语言意义上的“单词字符”,即a-zA-Z0-9_,这应该有效。如果他们不这样做,那么你就必须做一些不同的事情。

如果不是 GNU/Linux 系统,您可以使用 , 或者您的系统拥有的任何内容idgroups

(当然,您也可以将脚本放在某个位置,PATH这样您就不需要在登录脚本中嵌入完整路径。)

答案2

(无法评论,没有足够的代表......)

从评论交换中我想说,您需要将脚本设置为该组用户所拥有的(并相应地更新 ugo 权限),然后在其 .bashrc (或基于操作系统的任何等效文件)中附加一行启动所说的脚本。

顺便说一句,这似乎是一个很棒的工具。

答案3

您尝试为这些用户运行的似乎是一个 shell,而不是您希望在他们的 shell(例如 bash)变为交互式之前运行的脚本。

在这种情况下:错误的施工地点!您只需使用命令将他们的 shell 设置为该值即可chshman chsh详情请参阅。


请注意,如果不合适请忽略,因为由于某种原因您必须使用 C++ 解释器:

顺便说一句,看到 igcc 已经五年没有被触及了,从那以后又出现了多个 C++ 标准:绝对不是您想要使用的 C/C++ REPL,当您可以拥有紧贴反而。

相关内容