Linux motd详解

本文涉及的产品
运维安全中心(堡垒机),企业双擎版 50资产 7天
运维安全中心(堡垒机),免费版 6个月
简介:
原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://dgd2010.blog.51cto.com/1539422/1661362

  motd是message of the day的缩写,意思是“当天的提示信息”,通常在用户成功登录到Linux后出现,该信息可以从/etc/motd文本文件中找到。

提示:/etc/motd文件有时不一定是个常规文本文件,也可能是一个软链接到某个特定的文件,如/var/run/motd。

一般来说,这个文件是一个静态文本文件,只在某个Linux发行版本完成安装或升级后才会更新。

提示:UNIX/Linux系统管理员也通常会把一些重要的信息写到这个文件里面,以方便其他人或自己下次成功登录时需要注意什么和做什么,非常方便。

通常一个标准的motd信息有以下内容:

  1. 欢迎信息,一般包括Linux发行版本名称,内核版本、操作系统位数

  2. 操作系统当前信息,如操作系统负载,进程数量,文件系统使用情况,当前用户登录数,内存(含swap)使用情况,IP地址

  3. 文档和帮助信息

  4. 可更新的软件包和可升级的安全补丁

由此可见,motd展示出来的一定是一个当前的信息,是一组固定时间下特定参数所对应的数值,而不是一成不变的信息,因此静态的文本文件不足以满足以上内容。

想要做到每次登录都要显示出当前的motd,则需要一种机制来实现,pam_motd就是实现这个功能的模块。可参考motd(5), pam.conf(5), pam.d(5), pam(7), update-motd(5)

在Ubuntu中有update-motd来帮助系统管理员或用户实现这个功能。可执行的脚本位于/etc/update-motd.d/*下,在每次登录时以root身份由pam_motd调用,脚本运行的次序由run-parts(run scripts or programs in a directory,在一个目录里运行脚本或程序)的--lsbsysinit选项决定。pam_motd也支持不动态更新,只需要在其选项中添加noupdate即可。

编辑/etc/pam.d/login文件,

启用动态更新motd模块:session  optional  pam_motd.so  motd=/etc/motd

关闭动态更新motd模块:session  optional  pam_motd.so  noupdate

剩下的就是发挥系统管理员的Shell脚本水平了,例如

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#Long running operations (such as network calls) or resource intensive scripts should cache output, and only  update that output if it is deemed expired.  For instance:   
#/etc/update-motd.d/50-news
#!/bin/sh   
out= /var/run/foo    
script= "w3m -dump http://news.google.com/"    
if  [ -f  "$out"  ];  then    
   # Output exists, print it    
   echo    
   cat  "$out"    
   # See if it's expired, and background update    
   lastrun=$(stat -c %Y  "$out" ) || lastrun=0    
   expiration=$( expr  $lastrun + 86400)    
   if  [ $( date  +%s) - ge  $expiration ];  then    
     $script >  "$out"  &    
   fi    
else    
   # No cache at all, so update in the background    
   $script >  "$out"  &    
fi
#Scripts should emit a blank line before output, and end with a newline character.  For instance:   
#/etc/update-motd/05-lsb-release
#!/bin/sh   
echo    
lsb-release -a

补充信息:run-parts runs all the executable files named within constraints described below,  found  in  directory  directory.Other files and directories are silently ignored.run-parts运行目录下所有的可执行文件,其他文件或目录将被忽略。可参考man 8 run-parts。

如果换一种思路,就可以将这些思路和想法应用到CentOS上。CentOS同样拥有来自pam包的pam_motd.so模块,只要启用(例如编辑/etc/pam.d/login文件)就可以,与其他pam模块一样,位于/lib64/security/目录下。

PS:其实写文章思路很简单,找到一个一组人群能用到的知识点,查看相关的手册,将这些知识整理出来,结合自己的实际经验,再加一点温馨提示就ok了!有些事情大家都知道…但是愿意去做的有几个?

本文出自 “通信,我的最爱” 博客,请务必保留此出处http://dgd2010.blog.51cto.com/1539422/1661362

目录
相关文章
|
Linux 安全 Ubuntu
|
3月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
325 8
|
3月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
1106 6
|
2天前
|
Linux
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
45 23
Linux系统之whereis命令的基本使用
|
3月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
187 3
|
3月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
141 2
|
16天前
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
29 11
|
2月前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
98 14
Linux 10 个“who”命令示例
|
2月前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
193 20