我可以将 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
使用方式:
- 删除默认的静态
/etc/motd
。 - 使 SSHD 不在& reload服务中显示带有行
PrintMotd no
、Banner none
、UsePAM yes
(以及可选的PrintLastLog no
)的静态 MOTD 。/etc/ssh/sshd_config
sshd
- 将这一行添加到您的
/etc/pam.d/sshd
:session optional pam_motd.so motd=/run/motd.dynamic
。 - 将您的脚本添加到
/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