是否可以将命令放入 /etc/motd 中?

是否可以将命令放入 /etc/motd 中?

我可以将 shell 命令放入/etc/motd登录横幅文件中吗?我尝试过:

 $(uptime)

`uptime`

这可能吗?

答案1

/etc/motd只读而不执行,所以从技术上讲,你不能在其中放置 shell 命令。

但是,在登录时执行 shell 脚本也可以获得相同的结果。这通常是通过调整/etc/profile每次用户登录时执行的脚本来实现的。一种有用的做法是将要执行的命令放在名为 的脚本中,/etc/motd.sh并从 调用此脚本/etc/profile,通常在脚本末尾。

答案2

Ubuntu服务器有一个程序叫做update-motd来自包libpam-modules

UNIX/Linux 系统管理员经常通过维护文件 /etc/motd 中的文本向控制台和远程用户传达重要信息,该文本由 pam_motd(8) 模块在交互式 shell 登录时显示。

传统上,此文件是静态文本,通常由发行版安装并且仅在版本升级时更新,或由本地管理员用相关信息覆盖。

Ubuntu 引入了 update-motd 框架,通过该框架,motd(5) 在登录时由一组脚本动态组装而成。

此脚本集合位于 下/etc/update-motd.d/。有关更多信息,请参阅维基页面

除了生成 之外/etc/motd,还有一种替代方法是使用 cron 作业,而不是在登录时运行脚本。当然,这不一样,但我过去有时遇到过这种方法。但请注意, 也曾使用过这种方法update-motd,但由于遇到问题,它已被放弃。您可以找到有关此的更多信息这里

答案3

为了Centos 7update-motd.d服务器我建议使用我的Ubuntu端口。

与其他解决方案不同,当您通过控制台 SSH/登录时,它实际上只会显示一次动态 MOTD(screen例如,其他解决方案会使其在您打开新窗口时显示)。

使用以下命令安装:

yum install https://github.com/gdubicki/centos-pam-with-update-motd/releases/download/1.1.8-1022.3/pam-1.1.8-1022.el7.x86_64.rpm

使用方式:

  1. 删除默认的静态/etc/motd
  2. 使 SSHD 不在& reload服务中显示带有行PrintMotd noBanner noneUsePAM yes(以及可选的PrintLastLog no)的静态 MOTD 。/etc/ssh/sshd_configsshd
  3. 将这一行添加到您的/etc/pam.d/sshdsession optional pam_motd.so motd=/run/motd.dynamic
  4. 将您的脚本添加到/etc/update-motd.d,就像在 Ubuntu 上一样

请参见https://github.com/gdubicki/centos-pam-with-update-motd了解最新信息。

答案4

不确定这是否在所有发行版中都一样,但在 Arch Linux 上,该/etc/profile文件已经包含一些您通常不想触碰的内容。但您可以在/etc/profile.d/文件夹中创建一个新文件,并用要执行的脚本填充它。

例如:

内容/etc/profile.d/motd.sh
echo "Hello, we have the date and time: $(date)"

登录时输出以下文本:

Hello, we have the date and time: Tue Apr  4 00:53:11 CEST 2023

相关内容