登录时更新 MOTD

登录时更新 MOTD

我一直在修改我的 CentOS 服务器登录程序,我想使用以下命令更新我的 MOTDlinux_logo程序。我已经尝试过几种方法,但没有达到预期的效果。我从这个命令开始:

/usr/bin/linux_logo -c -u -y -t "$R" > /etc/motd

这里要更新的关键信息是正常运行时间。

我尝试将其添加到我的.bashrc文件中,并将命令添加到/etc/profile.d/文件夹中的新 bash 脚本中,并使其可执行。这两种方法都使其在登录时运行,但仅在打印 MOTD 后运行,因此需要一次登录。

我还创建了一个 init 脚本,其中包含命令,用于chkconfig将其设置为在运行时级别 345 启动,我相信这只是让它在启动期间运行脚本。

我还尝试将以下内容添加到我的sshd_config文件中:

ForceCommand /usr/bin/linux_logo -c -u -y -t "$R" > /etc/motd

这会导致我每次登录时关闭 ssh 连接:/

这些都是我在谷歌搜索时发现的类似帖子的建议,所以我认为我遗漏了一些东西,在这一点上,我们将不胜感激。

总而言之,我希望在打印 motd 之前在登录时运行以下或类似的命令。这可能吗?

if [ -f /usr/bin/linux_logo ]; then
  /usr/bin/linux_logo -c -u -y -t "$R" > /etc/motd
fi

答案1

根据维基百科文章/etc/motd称为它执行登录 shell。这就解释了为什么在.bashrc文件中包含任何内容都不起作用。

通过chkconfig和链接中的/etc/rcX.d/更新确实只在启动时完成。

您可以尝试研究的一件事是/etc/motd用命名管道(mkfifo /etc/motd)替换,并让程序以某种方式检测该管道的读数并用所需的输出填充该管道。

答案2

当用户登录时没有理由运行这个,只需将其添加到 root 的 crontab 或/etc/crontab.要运行命令并每 5 分钟更新一次 motd,请将此行添加到/etc/crontab

*/5 * * * * root /usr/bin/linux_logo -c -u -y -t "$R" > /etc/motd

答案3

在现代 Linux 中,任何写入/etc/motd.dynamic都会更改登录。

如果您想做得“正确”,请创建/etc/update-motd.d并放置脚本,其输出将构成 MOTD。

https://ownyourbits.com/2017/04/05/customize-your-motd-login-message-in-debian-and-ubuntu/

相关内容