如何通过Bash脚本在每次登录Shell时自动查看Linux系统信息?

Bash脚本实现每次登录到Shell时可以查看Linux系统信息

Bash脚本实现每次登录到Shell时可以查看Linux系统信息

在Linux系统中,通过编写Bash脚本,可以在每次登录Shell时自动显示系统信息,这不仅方便管理员快速了解系统状态,还能帮助用户及时发现潜在问题,下面将详细介绍如何实现这一功能,并提供相关示例代码。

一、脚本

该脚本主要分为六个部分,每部分展示不同类型的系统信息:

1、通用系统信息:包括主机名、制造商、产品名称、序列号等。

2、CPU/内存当前使用情况:显示内存和CPU的使用率。

3、硬盘使用率超过80%的分区:列出使用率超过80%的磁盘分区。

4、列出系统WWN详情:如果系统是物理机,则列出光纤通道主机总线适配器(HBA)的WWN(World Wide Name)。

Bash脚本实现每次登录到Shell时可以查看Linux系统信息

5、Oracle DB实例:检查并列出正在运行的Oracle数据库实例。

6、可更新的包:显示系统中可以更新的软件包。

二、脚本代码

以下是完整的Bash脚本代码,保存为/opt/scripts/system-info.sh

#!/bin/bash
打印通用系统信息
echo -e "------------------------------System Information----------------------------"
echo -e "Hostname:ttt$(hostname)"
echo -e "Uptime:ttt$(uptime | awk '{print $3,$4}' | sed 's/,//')"
echo -e "Manufacturer:tt$(cat /sys/class/dmi/id/chassis_vendor)"
echo -e "Product Name:tt$(cat /sys/class/dmi/id/product_name)"
echo -e "Version:ttt$(cat /sys/class/dmi/id/product_version)"
echo -e "Serial Number:tt$(cat /sys/class/dmi/id/product_serial)"
echo -e "Machine Type:tt$(vserver=$(lscpu | grep Hypervisor | wc -l); if [ $vserver -gt 0 ]; then echo "VM"; else echo "Physical"; fi)"
echo -e "Operating System:t$(hostnamectl | grep "Operating System" | cut -d ' ' -f5-)"
echo -e "Kernel:ttt$(uname -r)"
echo -e "Architecture:tt$(arch)"
echo -e "Processor Name:t$(awk -F':' '/^model name/ {print $2}' /proc/cpuinfo | uniq | sed -e 's/^[ t]*//')"
echo -e "Active User:tt$(w | cut -d ' ' -f1 | grep -v USER | xargs -n1)"
echo -e "System Main IP:t$(hostname -I)"
echo ""
打印CPU和内存使用情况
echo -e "------------------------------CPU/Memory Usage------------------------------"
echo -e "Memory Usage:tt$(free | awk '/Mem/{printf("%.2f%"), $3/$2*100}')"
echo -e "Swap Usage:tt$(free | awk '/Swap/{printf("%.2f%"), $3/$2*100}')"
echo -e "CPU Usage:tt$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *([0-9.]*)%* id.*/1/" | awk '{print int($1+$2)}')%"
echo ""
打印磁盘使用率超过80%的分区
echo -e "------------------------------Disk Usage >80%------------------------------"
df -Ph | sed 's/%//g' | awk '{ if($5 > 80) print $0;}'
echo ""
打印WWN详情
echo -e "------------------------------For WWN Details-------------------------------"
vserver=$(lscpu | grep Hypervisor | wc -l)
if [ $vserver -gt 0 ]; then
    echo "$(hostname) is a VM"
else
    cat /sys/class/fc_host/host?/port_name
fi
echo ""
打印Oracle DB实例
echo -e "------------------------------Oracle DB Instances---------------------------"
if id oracle >/dev/null 2>&1; then
    ps -ef | grep pmon
else
    echo "oracle user does not exist on $(hostname)"
fi
echo ""
打印可更新的包
if [ -f /etc/redhat-release ] || [ -f /etc/centos-release ] || [ -f /etc/fedora-release ]; then
    echo -e "------------------------------Package Updates-------------------------------"
    yum updateinfo summary | grep 'Security|Bugfix|Enhancement'
    echo -e "-----------------------------------------------------------------------------"
elif [ -f /etc/debian_version ] || [ -f /etc/lsb-release ]; then
    echo -e "------------------------------Package Updates-------------------------------"
    apt list --upgradable
else
    echo "No package management system found."
fi
echo ""

三、单元表格

部分 命令示例 输出示例
通用系统信息 hostname,uptime,cat /sys/class/dmi/id/ Hostname: server
Uptime: 1 day, 23:54
Manufacturer: Dell
CPU/内存使用情况 free,top Memory Usage: 75.34%
CPU Usage: 15%
硬盘使用率超过80% df -Ph /dev/sda1 92%
WWN详情 lscpu grep Hypervisor,cat /sys/class/fc_host/host?/port_name server is a VM
/sys/class/fc_host/host0/port_name: 10:00:00:00:c9:7a
Oracle DB实例 id oracle,ps -ef grep pmon pmon (multiple lines)
可更新的包 yum updateinfo,apt list --upgradable httpd-2.4.6-45.el7.centos.x86_64 updates available

四、相关问题与解答

1.如何修改脚本以适应不同的Linux发行版?

Bash脚本实现每次登录到Shell时可以查看Linux系统信息

解答:脚本中已经包含了对不同Linux发行版的支持,对于Red Hat、CentOS和Fedora,使用yum updateinfo命令;对于Debian和Ubuntu,使用apt list --upgradable命令,你可以根据需要添加或修改这些命令以支持其他发行版。

2.如何确保脚本在每次登录时自动执行?

解答:可以通过修改用户的shell配置文件(如~/.bashrc~/.profile),在文件末尾添加一行来调用该脚本:

  source /opt/scripts/system-info.sh

确保脚本具有执行权限,可以使用以下命令赋予权限:

  chmod +x /opt/scripts/system-info.sh

通过编写和配置上述Bash脚本,你可以在每次登录到Linux Shell时自动查看系统信息,这有助于提高系统管理效率并及时发现潜在问题。

以上就是关于“Bash脚本实现每次登录到Shell时可以查看Linux系统信息”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/709873.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-12-06 14:21
Next 2024-12-06 14:21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入