脚本放到 /etc/profile.d/ 目录下即可(Centos5,6,7)
#!/bin/bash
#####################################################
# Author: 楚枫默寒
# Create_time: 2024/06/04
# Modify_time: 2024/06/11
#####################################################
# 定义颜色
HL='\033[37;1m'
RED='\033[31;1m'
GREEN='\033[32;1m'
YELLOW='\033[33;1m'
BLUE='\033[34;1m'
END='\033[0;1m'
DEFAULT='\033[0m'
#[信息信息]
HN=$HOSTNAME
DT=$(date +"%Y-%m-%d,%H:%M:%S")
VER=$(awk '/^[^#]/{print ($1,$3~/^[0-9]/?$3:$4)}' /etc/redhat-release)
HE=$(uname -sro)
UP=$(awk '{a=$1/86400;b=($1%86400)/3600;c=($1%3600)/60;d=$1%60}{printf("%d days, %d:%d:%d\n",a,b,c,d)}' /proc/uptime|awk '{if($1>=90) {print "'"${RED}"'"$1"'"${END}"'",$2,$3} else {print "'"${GREEN}"'"$1"'"${END}"'",$2,$3}}')
IPadd=$(ip addr | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | egrep -v "^127|0.0.0.0"| head -n 1|awk '{print "'"${RED}"'"$1"'"${END}"'"}')
#[系统版本]
osrelease=`cat /etc/redhat-release|awk -F "" '{for(i=1;i<=NF;i++) {if ($i ~ /[^ a-zA-Z()]/ ){str=$i
str1=(str1 str)}}print str1}'|awk -F"." '{print $1}'`
#[cpu部分]
cpu_info=`awk -F: '/model name/ {name=$2} END {print name}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//'`
cpu_hexin=`awk -F: '/model name/ {core++} END {print core}' /proc/cpuinfo`
#[内存swap]
mem_used=$(free -m | grep Mem | awk '{print$3}')
mem_total=$(free -m | grep Mem | awk '{print$2}')
swap_used=$(free -m | awk '/Swap/ {print $3}')
swap_total=$(free -m | awk '/Swap/ {print $2}')
M_info=$(free|grep -v buff|awk 'NR==1{printf "%.0f\n",$3/$2*100}'|awk '{if($1>=80) {print "'${mem_used}' MB / '${mem_total}' MB ('"${RED}"'"$1"'"${END}"'% Used)"} else {print "'${mem_used}' MB / '${mem_total}' MB ('"${GREEN}"'"$1"'"${END}"'% Used)"}}')
S_info=$(free|grep -v buff|awk 'NR==2{printf "%.0f\n",$3/$2*100}'|awk '{if($1>=80) {print "'${swap_used}' MB / '${swap_total}' MB ('"${RED}"'"$1"'"${END}"'% Used)"} else {print "'${swap_used}' MB / '${swap_total}' MB ('"${GREEN}"'"$1"'"${END}"'% Used)"}}')
#[Cpu负载信息]
load1=$(uptime |awk '{print $(NF-2),$(NF-1),$(NF)}'|awk -F , '{print $(NF-2),$(NF-1),$(NF)}'|awk '{if($1>=80) {print "'"${RED}"'"$1"'"${END}"'"} else {print "'"${GREEN}"'"$1"'"${END}"'"}}')"(1m) "
load2=$(uptime |awk '{print $(NF-2),$(NF-1),$(NF)}'|awk -F , '{print $(NF-2),$(NF-1),$(NF)}'|awk '{if($2>=80) {print "'"${RED}"'"$2"'"${END}"'"} else {print "'"${GREEN}"'"$2"'"${END}"'"}}')"(5m) "
load3=$(uptime |awk '{print $(NF-2),$(NF-1),$(NF)}'|awk -F , '{print $(NF-2),$(NF-1),$(NF)}'|awk '{if($3>=80) {print "'"${RED}"'"$3"'"${END}"'"} else {print "'"${GREEN}"'"$3"'"${END}"'"}}')"(15m)"
#[用户进程信息]
user_list=$(grep "bash$" /etc/passwd|awk -F [:] '{print $1}')
for u in $user_list
do
Pro_detail=$(ps aux | grep $u|grep -v 'grep' | wc -l)"($u)"
Pro_user+=$Pro_detail" "
done
Ulo=$(who|wc -l)
#[登录信息]
LastB=$(who -b|awk '{print $(NF-1),$(NF)}')
LastL=$(last -n 1 | head -n 1|awk '{print $1,$3,"at",$4,$5,$6,$7}')
#[文件系统]
FS=$(while read line;
do
awk '{if($4>=80) {printf "%-s%-30s%8s%8s%27s\n"," Mounted: ",$1,$2,$3," ('"${RED}"'"$4"'"${END}"'% Used)"} else {printf "%-s%-30s%8s%8s%27s\n"," Mounted: ",$1,$2,$3," ('"${GREEN}"'"$4"'"${END}"'% Used)"}}' <<< ${line}
percent=$(echo "${line}"|awk '{print $4}');
PROGRESS_BAR_WIDTH=65
for i in ${percent};
do
if [[ ${percent} -ge 80 ]];then
echo -ne "$i%" | awk -v width=$PROGRESS_BAR_WIDTH '{
done = int($1/100*width);
undone = width - done;
printf(" [");
for(i=0; i<done; i++) {printf("'"${RED}"'='"${END}"'");}
for(i=0; i<undone; i++) {printf(" ");}
printf("]");
printf("\r");
}'
else
echo -ne "$i%" | awk -v width=$PROGRESS_BAR_WIDTH '{
done = int($1/100*width);
undone = width - done;
printf(" [");
for(i=0; i<done; i++) {printf("'"${GREEN}"'='"${END}"'");}
for(i=0; i<undone; i++) {printf(" ");}
printf("]");
printf("\r");
}'
fi
done
echo
done <<< "$(df -hP|egrep -v '10|tmpfs|Filesystem|挂载点'|awk '{gsub("%"," ");print $6,$2,$3,$5}')")
#[结果输出]
echo -e "${HL}
[System Info]
Hostname : $HOSTNAME
Current Time : ${DT}
Version : ${VER}
Kernel : ${HE}
Uptime : ${UP}
Ipaddr : ${IPadd}
Cpu : ${cpu_info} | ${cpu_hexin} 核
Memory : ${M_info}
SWAP : ${S_info}
Load avg : ${load1} ${load2} ${load3}
Processes : ${Pro_user}
Users Logged on : ${Ulo}
Last Boot : ${LastB}
Last Login : ${LastL}
[Filesystem Info]
Mounted: 挂载点 容量 已用 (已用% Used)
${FS}
${DEFAULT}"