技术提示:使用 update-motd 定期更新您的 MOTD

作者:Dan Stegmaier

此技术提示向您提供有关如何自定义您的 motd (每日消息) 消息,以显示一个或多个脚本的输出的信息。 这使用update-motd程序包,该程序包在运行时更新 motd 消息。 我在 Ubuntu 9.10 上使用此方法,但并非所有系统都提供此程序包,因此可能需要额外的努力才能在其他系统上使用它。

可以使用以下命令安装 update-motd 守护程序:

$ sudo apt-get install update-motd

update-motd 的操作方式取决于您安装的 update-motd 的版本,但最终效果是它运行一组脚本,这些脚本的输出连接起来以生成新的 motd 消息。

如果您导航到 /etc/update-motd.d/,您会注意到有一系列以数字和连字符开头的预定义脚本。 这些数字告诉 update-motd 首先运行哪个脚本(从最低到最高),以及以什么顺序在输出中显示它们。 如果您愿意,您可以创建一个新脚本或将您的命令添加到现有脚本之一。

motd-1.png

在我的例子中,显示我的信息的脚本是 "10-stats",它包含

#!/bin/bash
echo "       ======================================="
echo "       =         Welcome to FSERV1.          ="
echo "       ======================================="
echo
btime=`who -b | sed -e 's/[^A-Z]*//'`
utime=`uptime | sed -e 's/ [0-9:]* up />/' -e 's/,.*//'`
echo "   ==== BOOT TIME ====           ==== UPTIME ===="
echo "       "$btime"                    " $utime
echo
echo "===================== DISK USAGE ======================"
df -h | egrep '(Filesystem)|(/dev/sd)'
echo
echo "================== CURRENTLY ONLINE ==================="
echo "NAME     LINE         TIME           IP ADDRESS"
who –ips

在我的例子中,我选择让脚本显示系统启动的日期和时间 (使用who -b)、系统正常运行时间、磁盘使用情况信息以及当前登录到系统的用户。 为了获得我想要的输出,我使用sed提取我想要输出的部分。 该sed命令用于编辑文本,这确实需要一些正则表达式的基本知识,一个可以并且已经填满卷的主题。

系统正常运行时间来自命令行

utime=`uptime | sed -e 's/ [0-9:]* up />/' -e 's/,.*//'`

的完整输出uptime将类似于

10:19:47 up 375 days,  9:20,  4 users,  load average: 0.93, 0.90, 0.81

我使用sed将其缩小到类似于 ">32 days"。 -e 指定要使用的sed"脚本",我指定两个脚本

  • s/ [0-9:]* up />/- 这会将以 "0 到 9 或冒号" 结尾并以 " up " 结尾的任何重复字符序列替换为 ">"。
  • s/,.*//- 这会将第一个逗号实例以及其后的任何和所有字符替换为空字符串(即将其清除)。

请注意,来自uptime的输出的确切格式可能因系统而异,因此此命令可能需要进行一些修改。

完成脚本后,请确保使用chmod +x使其可执行,现在当您登录时,您应该会看到新的 motd 消息。 这是我的 10-stats 脚本的输出

motd-2.png

我认为硬盘驱动器统计信息最为关键。 每次登录时,我都可以看到空闲空间的位置,并在必要时迁移我的数据。

正如我提到的,我在 Ubuntu 9.10 上使用此方法,但并非所有系统都提供update-motd程序包,并且您使用的程序包的版本也会影响其操作的详细信息,但基本功能相同:它使您能够定期更改 motd 消息。

加载 Disqus 评论