我一直在修改我的 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/