文章目录
脚本简介
- 基于运维统一脚本中,19、脚本安装下的检查服务器脚本安装
- 使用yum安装(yum仓库),系统版本Centos7
脚本注解
- 该脚本为了快速查看Centos7服务器上的基础配置
- 基础配置:OS、CPU、Memory、DISK、Network 的基础配置信息
- 脚本在检查磁盘读写是需要安装
sysstat
,检查网络配置是需要安装net-tools
安装包 - 脚本自动判断,如果没有安装,则退出脚本,提示需要安装对应的软件包
安装方式
cd /usr/local/bin
vim infosystem
...
# 保存退出后,赋予脚本可执行权限
chomd +x infosystem
- 脚本存放在/usr/local/bin/目录下,文件名: infosystem
- 存放完成后,添加可执行权限
执行方式
infosystem
- 在当前已安装的服务器上的任意路径输入infosystem
- 服务器上已安装bash-completion的则可使用tab键进行自动补全
执行结果
[root@localhost ~]# infosystem
----------------------------------------------------------------------------------
系统基本信息OS: CentOS vmware x86_64Host: CentOSKernel: Linux 3.10.0-862.el7.x86_64Uptime: 0.00, 0.01, 0.05Hostname: localhost.localdomainShell version: 4.2.46(2)-releaseIPaddr: 192.168.1.33 172.17.0.1
----------------------------------------------------------------------------------
CPU的基本信息Physical_CPUs: 2Virt_CPUs: 2CPU_Kernels: 1CPU_Type: Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz
----------------------------------------------------------------------------------
内存基本信息Total: 2829MBAvail: 788MBFree: 1462MB+788MB=2250MBMemory usage: 20.48%Swap Total: 2047MBSwap Used: 2047MB
----------------------------------------------------------------------------------
磁盘基本信息
Disk_name Disk_Type
sda HDD
sdb HDD
sr0 HDD
----------------------------------------------------------------------------------
Disk_name Size r/s w/s rkB/s Type
/dev/sda1 1073MB 0.35 0.00 7.94 xfs
/dev/sda2 41.9GB 2.12 1.25 177.47 LVM2_member
/dev/mapper/centos-root 39.7GB 2.04 1.42 176.03 xfs
/dev/mapper/centos-swap 2147MB 0.04 0.00 1.02 swap
----------------------------------------------------------------------------------
网卡基本信息
Network IPV4 Netmask Broadcas RX_packets TX_packets IPV6
docker0 172.17.0.1 255.255.0.0 172.17.255.255 34.8 53.5 fe80::42:4aff:fefb:a37e
ens33 192.168.1.33 255.255.255.0 192.168.1.255 32.1 3.3 fe80::258d:5ba8:5ed0:e382
脚本内容
#!/bin/bash
#所有者:北城半夏
#当前版本
#v1.0.1
#################################################################################
info3(){echo -e "\033[36m----------------------------------------------------------------------------------\033[0m"
}info(){
#系统
system=$(hostnamectl | grep System | awk '{print $3}')
kernel_release=$(hostnamectl | grep Kernel | awk -F : '{print $2}'|sed 's/^[ \t]*//g')
Virtualization=$(hostnamectl | grep Virtualization | awk '{print $2}')
server_name=$(hostname)
ipaddr=$(hostname -I)
#cpu
Physical_CPUs=$(grep "physical id" /proc/cpuinfo| sort | uniq | wc -l)
Virt_CPUs=$(grep "processor" /proc/cpuinfo | wc -l)
CPU_Kernels=$(grep "cores" /proc/cpuinfo|uniq| awk -F ': ' '{print $2}')
CPU_Type=$(grep "model name" /proc/cpuinfo | awk -F ': ' '{print $2}' | sort | uniq)
CPU_Arch=$(uname -m)
#负载
update_load=`uptime | awk -F ":" '{print $NF}'|sed 's/^[ \t]*//g'`
#bash
bash_version=`bash --version|grep "GNU bash"|awk '{print $4}'`
#内存
MemTotal=$(grep MemTotal /proc/meminfo| awk '{print $2}') #KB
MemFree=$(grep MemFree /proc/meminfo| awk '{print $2}') #KB
MemAvailable=$(grep -i Cached /proc/meminfo | awk '{print $2}' |head -1) #KB
SwapTotal=$(grep SwapTotal /proc/meminfo| awk '{print $2}')
SwapFree=$(grep SwapFree /proc/meminfo| awk '{print $2}') #KB
let MemUsed=MemTotal-MemFree
MemPercent=$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}")
report_MemTotal="$((MemTotal/1024))" #内存总容量(MB)
report_MemFree="$((MemFree/1024))" #内存剩余(MB)
report_MemAvai="$((MemAvailable/1024))" #使用中(MB)
#swap
report_swapTotal="$((SwapTotal/1024))""MB" #内存总容量(MB)
report_swapFree="$((SwapFree/1024))""MB" #内存剩余(MB)
let Memfree=MemAvailable+MemFree
let MemUsed=MemTotal-Memfree
report_Mem="$((Memfree/1024))""MB"
report_MemUsedPercent="$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}")""%" #内存使用率%}
pd_disk_ssd(){
pd_ssd=`lsblk -d -o name|grep -v NAME`
pd_TYPE=`lsblk -d -o rota|grep -v ROTA`
for i in ${pd_ssd};do pd_ssd_name[${#pd_ssd_name[*]}]=$i;done
for i in ${pd_TYPE};do pd_TYPE_name[${#pd_TYPE_name[*]}]=$i;done
printf "\e[34m%-10s %-11s %-11s \e[0m\n" Disk_name Disk_Type
local num1=$((`echo ${#pd_TYPE_name[*]}`-1))
for pd in `seq 0 ${num1}`doif [ ${pd_TYPE_name[pd]} -eq 0 ];thenprintf "\e[36m%-10s %-11s %-11s \e[0m\n" ${pd_ssd_name[pd]} SSDelif [ ${pd_TYPE_name[pd]} -eq 1 ];thenprintf "\e[36m%-10s %-11s %-11s \e[0m\n" ${pd_ssd_name[pd]} HDDfi
done
info3
}
#网卡信息
getnetworkstatus(){
check_rpm_iostat net-toolslocal ifs=(`ifconfig | egrep "^e|^d|^l" | awk -F: '{print $1}'`)
echo -e "\033[36m网卡基本信息\033[0m" local a=`ifconfig | egrep "^e|^d" |awk -F ':' '{print $1}'`local b=`for i in $a; do echo $(ifconfig ${i} |grep inet6 |awk '{print $2}') ;done`local ipv4=$(for i in $a;do echo "`ifconfig ${i} | awk 'NR==2{print $2}'`" ;done)local netmask=$(for i in $a ;do echo `ifconfig $i|grep netmask|awk '{print $4}'` ; done)local broadcast=$(for i in $a ;do echo `ifconfig $i|grep broadcast|awk '{print $6}'` ; done)local RX_packets=$(for i in $a ;do echo `ifconfig $i|grep "RX packets"|awk -F '(' '{print $2}'|cut -d ")" -f 1|awk '{print $1}'` ; done)local TX_packets=$(for i in $a ;do echo `ifconfig $i|grep "TX packets"|awk -F '(' '{print $2}'|cut -d ")" -f 1|awk '{print $1}'` ; done)local num=`ifconfig | egrep "^e|^d|^l" |awk -F ':' '{print $1}'|wc -l`local num_01=`for((i=0;i<$num;i++)); do echo $i; done`#ipv4for i in $ipv4 ;do network_ipv4[${#network_ipv4[*]}]=$i ;done#ipv6for i in $b; do network_ipv6[${#network_ipv6[*]}]=$i ; done#网卡名eth_name=(`ifconfig | egrep "^e|^d" | awk -F: '{print $1}'`)#netmask 子网掩码for i in $netmask; do network_netmask[${#network_netmask[*]}]=$i ; done#broadcast 默认网关for i in $broadcast; do network_broadcast[${#network_broadcast[*]}]=$i ; done#RX packets 出流量for i in $RX_packets; do network_RX_packets[${#network_RX_packets[*]}]=$i ; done#TX packets 进流量for i in $TX_packets; do network_TX_packets[${#network_TX_packets[*]}]=$i ; doneprintf "\e[34m%-13s %-15s %-15s %-15s %-10s %-15s %-23s\e[0m\n" Network IPV4 Netmask Broadcas RX_packets TX_packets IPV6for i in $num_01doprintf "%-13s %-15s %-15s %-15s %-10s %-15s %-23s\n" ${eth_name[i]} ${network_ipv4[i]} ${network_netmask[i]} ${network_broadcast[i]} ${network_RX_packets[i]} ${network_TX_packets[i]} ${network_ipv6[i]}done}
############################################################################################################
disk_info(){#磁盘
check_rpm_iostat sysstat
disk_info=`blkid|awk -F':' '{print $1}'|grep -v sr0`
for i in ${disk_info};do disk_name[${#disk_name[*]}]=$i;done
disk_type_info=`blkid|awk '{print $1""$NF}'|grep -v sr0|awk -F'"' '{print $2}'`
for i in ${disk_type_info};do disk_type[${#disk_type[*]}]=$i;done
num=$((`echo ${#disk_name[*]}`-1))
for size in `seq 0 ${num}`dodisk_size_array=`fdisk -l ${disk_name[size]}|grep Disk|awk '{print $3""$4}'|cut -d , -f 1`disk_size[${#disk_size[*]}]=$disk_size_arraydiskRead_writ_array=`iostat -d -x ${disk_name[size]}| grep -v "^$"|tail -1|awk '{print $4"\t"$5"\t"$6}'`diskRead_writ[${#diskRead_writ[*]}]=${diskRead_writ_array}
done
echo -e "\033[36m磁盘基本信息\033[0m"
pd_disk_ssd
printf "\e[34m%-28s %-11s %-10s%-10s%-10s%-11s\e[0m\n" Disk_name Size r/s w/s rkB/s Type
for i in `seq 0 $num`doprintf "\e[32m%-28s %-10s %-10s%-10s%-10s%-10s\e[0m\n" ${disk_name[i]} ${disk_size[i]} ${diskRead_writ[i]} ${disk_type[i]}done
}################################################################################################################
info_index(){info
info3
echo -e "\033[36m系统基本信息\033[0m"
echo " OS: ${system} ${Virtualization} ${CPU_Arch}"
echo " Host: ${system}"
echo " Kernel: ${kernel_release}"
echo " Uptime: ${update_load}"
echo " Hostname: ${server_name}"
echo " Shell version: ${bash_version}"
echo " IPaddr: ${ipaddr}"
info3
echo -e "\033[36mCPU的基本信息\033[0m"
echo " Physical_CPUs: $Physical_CPUs"
echo " Virt_CPUs: $Virt_CPUs"
echo " CPU_Kernels: $CPU_Kernels"
echo " CPU_Type: $CPU_Type"
info3
echo -e "\033[36m内存基本信息\033[0m"
echo " Total: ${report_MemTotal}MB"
echo " Avail: ${report_MemAvai}MB"
echo " Free: ${report_MemFree}MB+${report_MemAvai}MB=${report_Mem}"
echo " Memory usage: ${report_MemUsedPercent}"
echo " Swap Total: ${report_swapTotal}"
echo " Swap Used: ${report_swapTotal}"
info3
disk_info
info3
getnetworkstatus
}
check_rpm_iostat(){local rpm_name="$1"iostat_rpm=`rpm -qa | egrep "${rpm_name}"| wc -l`if [ $iostat_rpm -eq 0 ] ;thenecho "${rpm_name} and net-tools not found,请安装后重试"exit 1fi
}
info_index