运维小妙招:如何让系统信息随登录自动展现?

系统
通过一个简单的登录脚本,我们可以在用户每次登录时自动显示系统的关键信息,这不仅提高了工作效率,还能快速定位问题。

在日常运维工作中,及时获取系统的基本信息对于维护系统的稳定性和安全性至关重要。通过一个简单的登录脚本,我们可以在用户每次登录时自动显示系统的关键信息,这不仅提高了工作效率,还能快速定位问题。本文将介绍如何编写这样一个实用的小脚本,并详细解释其功能和实现方法。

脚本功能

该脚本主要实现以下功能:

  • 显示系统基本信息:包括主机名、操作系统版本、内核版本等。
  • 显示硬件信息:如CPU型号、内存使用情况等。
  • 显示磁盘使用情况:各个挂载点的使用率。
  • 显示网络信息:如IP地址、网络接口状态等。
  • 显示当前系统负载:CPU负载和平均负载。

脚本实现

1. 编写脚本

以下是一个示例脚本,名为system_info.sh:

#!/bin/bash

# 定义颜色
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m' # 没有颜色

# 获取IP地址和主机名
IP_ADDR=$(hostname -I | cut -d' ' -f1)
HOSTNAME=$(hostname)

# CPU负载信息:
cpu_load() {
    echo -e "${CYAN}\t\t\tCPU的负载情况${NC}"
    echo -e "\t------------------------------------------------"
    echo -e "\tCPU load in 1  min is: ${YELLOW}`awk  '{printf "%15s",$1}' /proc/loadavg`${NC}"
    echo -e "\tCPU load in 5  min is: ${YELLOW}`awk  '{printf "%15s",$2}' /proc/loadavg`${NC}"
    echo -e "\tCPU load in 10 min is: ${YELLOW}`awk  '{printf "%15s",$3}' /proc/loadavg`${NC}"
    echo
}

# 内存基本信息:
memory_info() {
    echo -e "${CYAN}\t\t\t内存的使用情况${NC}"
    echo -e "\t------------------------------------------------"
    echo -e "\t${GREEN}`free -h | awk '/Mem/{printf "%-10s %s","内存总容量:",$2}'`${NC}"
    echo -e "\t${GREEN}`free -h | awk '/Mem/{printf "%-10s %s","内存空闲容量:",$4}'`${NC}"
    echo -e "\t${GREEN}`free -h | awk '/Mem/{printf "%-10s %s","内存缓存:",$6}'`${NC}"
    echo
}

# 磁盘使用量排序:
disk_rank() {
    echo -e "${CYAN}\t\t\t各分区使用率${NC}"
    echo -e "\t------------------------------------------------"
    df -h  -x tmpfs -x devtmpfs | sort -nr -k 5 | awk '/dev/{printf "\t%-20s %10s\n", $1, $5}'
    echo
}

# 显示系统信息
echo
echo -e "${CYAN}\t\t\t系统基本信息:${NC}"
echo -e "\t------------------------------------------------"
echo -e "\tCurrent Time : ${GREEN}$(date)${NC}"
echo -e "\tVersion      : ${GREEN}$(cat /etc/os-release | grep -w "PRETTY_NAME" | cut -d= -f2 | tr -d '"')${NC}"
echo -e "\tKernel       : ${GREEN}$(uname -r)${NC}"
echo -e "\tUptime       : ${GREEN}$(uptime -p)${NC}"
echo -e "\tIP addr      : ${GREEN}$IP_ADDR${NC}"
echo -e "\tHostname     : ${GREEN}$HOSTNAME${NC}"
echo -e "\tCpu          : ${GREEN}$(lscpu | grep "Model name:" | sed 's/Model name:\s*//')${NC}"
echo -e "\tMemory       : ${GREEN}$(free -h | awk '/^Mem:/ { print $3 "/" $2 }')${NC}"
echo -e "\tSWAP         : ${GREEN}$(free -h | awk '/^Swap:/ { print $3 "/" $2 }')${NC}"
echo -e "\tUsers Logged : ${GREEN}$(who | wc -l) users${NC}"
echo

cpu_load
memory_info
disk_rank

2. 设置脚本为登录时自动执行

将脚本放置在用户主目录下,例如~/system_info.sh,然后修改.bashrc文件,使其在每次登录时自动执行该脚本:

echo "~/system_info.sh" >> ~/.bashrc

解释脚本内容

(1) 获取系统基本信息

通过hostname命令获取主机名,lsb_release -d命令获取操作系统版本,uname -r获取内核版本。

(2) 获取硬件信息

使用lscpu命令提取CPU信息,通过free -h获取内存使用情况。

(3) 获取磁盘使用情况

使用df -h命令显示各个挂载点的磁盘使用率。

(4) 获取网络信息

通过hostname -I获取IP地址,ip -o -4 addr show列出所有网络接口及其对应的IP地址。

(5) 获取系统负载

使用uptime命令提取系统负载平均值。

总结

通过以上步骤,我们实现了一个登录即显示系统信息的运维小脚本。这个脚本可以帮助运维人员在登录时快速了解系统的基本状态,从而更加高效地进行系统维护和故障排除。希望本文对大家有所帮助,也欢迎大家根据实际需求对脚本进行改进和扩展。

责任编辑:赵宁宁 来源: 攻城狮成长日记
相关推荐

2013-02-01 09:56:55

2019-08-27 08:55:05

2016-09-08 23:58:42

云运维 云数据中心

2022-06-07 11:16:51

云原生人工智能运维

2013-06-17 14:46:09

2014-09-15 22:01:02

IT运维

2011-12-28 14:59:33

TripwireIT运维IT运维成本

2015-08-19 14:38:12

公有云运维自动化

2018-06-23 07:31:05

2015-07-07 08:54:27

云计算自动化运维

2017-03-20 14:19:10

DevOps运维IT

2022-10-20 17:37:46

运维智能管理平台

2014-08-04 10:10:35

IT运维自动化运维

2014-09-17 11:16:42

2014-09-17 10:34:47

2018-09-27 08:59:29

2017-10-13 13:14:35

互联网

2011-09-01 10:22:03

Cobbler运维自动化

2012-10-22 14:54:48

2021-07-07 05:46:46

运维监控Prometheus
点赞
收藏

51CTO技术栈公众号