自定义 Linux 登录欢迎提示(动态 MOTD)

目录

裴先生
裴先生
发布于 2021-02-06 / 0 阅读
0
0
原创

本文介绍如何在 Debian/Ubuntu 等 Linux 系统中配置动态登录欢迎信息(MOTD, Message of the Day),实现每次 SSH 登录时自动显示系统状态(如 CPU 负载、内存使用、磁盘占用、IP 地址等),并附带个性化 ASCII 艺术图案。


配置步骤

1. 禁用默认 MOTD 输出

编辑 SSH 服务配置,关闭静态 MOTD 打印:

vim /etc/ssh/sshd_config

找到并修改以下行:

PrintMotd no

💡 此设置防止 SSH 在登录时自动打印 /etc/motd 的静态内容(我们将通过 profile 动态生成)。


2. 禁用 PAM 的 MOTD 模块(可选但推荐)

注释掉 PAM 登录会话中的 MOTD 模块,避免重复或冲突:

vim /etc/pam.d/login

将以下行注释:

# session optional pam_motd.so

⚠️ 注意:某些发行版(如 Ubuntu)可能还需修改 /etc/pam.d/sshd


3. 创建动态 MOTD 脚本

创建脚本文件 /usr/local/bin/dynmotd

vim /usr/local/bin/dynmotd

粘贴以下内容:

#!/bin/bash

# System load
LOAD1=$(cat /proc/loadavg | awk '{print $1}')
LOAD5=$(cat /proc/loadavg | awk '{print $2}')
LOAD15=$(cat /proc/loadavg | awk '{print $3}')

# Memory info
MEMORY=$(free -mh | awk '/^Mem:/ {print "used: "$3" / "$2" ( free: "$4" )"}')
MEM_USAGE=$(free -m | awk '/^Mem:/ {printf("%.1f%%", ($3/$2)*100)}')

# Disk usage for root partition
DISK=$(df -Ph / | awk '/\// {print "used: "$3" / "$2" ( free: "$4" )"}')
DISK_USAGE=$(df -h / | awk '/\// {print $5}')

# Output dynamic MOTD
echo "
===========================================================================
- Release.............: $(lsb_release -r | awk '{print $2}')
- Kernel..............: $(uname -r)
- Hostname............: $(uname -n)
- Username............: $(whoami)
- IP..................: 
$(netstat -ntu | grep tcp | awk '{print $5}' | cut -d: -f1 | sort | uniq | grep -v '^127.0.0.1$' | grep -v '^::1$')
- Login Users.........: Total $(users | wc -w) user(s)
===========================================================================
- CPU usage...........: $LOAD1 - $LOAD5 - $LOAD15 (1-5-15 min)
- Memory..............: $MEMORY
- Memory usage........: $MEM_USAGE
- Disk usage (/)......: $DISK_USAGE
===========================================================================
"

保存后赋予执行权限:

chmod 755 /usr/local/bin/dynmotd

改进说明

  • 使用 $() 替代反引号 `(更现代、可嵌套)
  • 过滤掉本地回环地址(127.0.0.1, ::1),只显示真实远程 IP
  • 增加了根分区磁盘使用率显示

4. 在用户登录时调用脚本

编辑全局 shell 配置文件:

vim /etc/profile

在文件末尾添加一行:

/usr/local/bin/dynmotd

📌 此方式确保所有交互式 shell 登录(包括 SSH)都会执行该脚本。


5. (可选)设置静态 MOTD 图案

虽然我们已禁用自动打印 /etc/motd,但某些终端仍可能读取它。可将其设为个性化 ASCII 艺术:

vim /etc/motd

清空原内容,粘贴以下“佛祖保佑”图案(或自定义):

//                          _ooOoo_                               //
//                         o8888888o                              //
//                         88" . "88                              //
//                         (| ^_^ |)                              //
//                         O\  =  /O                              //
//                      ____/`---'\____                           //
//                    .'  \\|     |//  `.                         //
//                   /  \\|||  :  |||//  \                        //
//                  /  _||||| -:- |||||-  \                       //
//                  |   | \\\  -  /// |   |                       //
//                  | \_|  ''\---/''  |   |                       //
//                  \  .-\__  `-`  ___/-. /                       //
//                ___`. .'  /--.--\  `. . ___                     //
//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
//      ========`-.____`-.___\_____/___.-`____.-'========         //
//                           `=---='                              //
//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
//         	 佛祖保佑       永无BUG     永不修改                //

🔔 注意:由于我们在 /etc/profile 中已动态输出信息,此文件通常不会被显示。保留仅为兼容性或本地登录使用。


最终效果

SSH 登录后将看到类似如下动态信息:

===========================================================================
- Release.............: 9.13
- Kernel..............: 4.9.0-19-amd64
- Hostname............: VM-0-7-debian
- Username............: root
- IP..................: 
203.0.113.45
- Login Users.........: Total 1 user(s)
===========================================================================
- CPU usage...........: 0.12 - 0.08 - 0.05 (1-5-15 min)
- Memory..............: used: 320M / 1.9G ( free: 1.6G )
- Memory usage........: 16.8%
- Disk usage (/)......: 28%
===========================================================================

1CF104A1-D52F-49DB-839E-F71D063AAF0F.png

原创

版权声明:本博客原创文章,由 裴先生 2021年02月06日 发表。
转载说明:除特殊说明外本站文章皆由 CC BY-NC-SA 4.0 协议发布,转载须注明出处。


评论