#!/bin/bash
# 如有需要: 磁盘健康检查命令为
# smartctl -H /dev/sda
# 如下为可能需要安装的软件包
yum install iperf3 -y >>/dev/null 2>&1
date +"%F %T"
iperf3_server_ip="192.168.1.1" # 此为 iperf3 服务端IP
cpu_s_1=`cat /proc/cpuinfo | grep "physical id" | uniq| wc -l`
cpu_s_2=`cat /proc/cpuinfo | grep "cpu cores" | uniq | awk -F: '{print $2}'`
cpu_s_3=`cat /proc/cpuinfo | grep processo | wc -l `
mem_size=`cat /proc/meminfo | grep MemTotal | awk '{print int($2/1024/1024)+1}'`
disk_s=`lsblk | grep disk | awk '{print $1,$4}' | wc -l`
disk_size=`lsblk | grep disk | awk '{print $1,$4}'`
disk_name=`lsblk | grep disk | awk '{print $1}'`
net_number=`lspci | egrep -i --color 'network|ethernet' | wc -l`
evade_mount="/ /boot /dev /etc /home /lib /lib64 /media /opt /proc /root /run /srv /tmp /usr /var"
all_mount=$(df -P -m | grep ^/dev |awk '{print $6}')
network_card_s=`ifconfig | grep flags | awk -F':' '{print $1}' | grep -v lo`
echo "CPU个数: ${cpu_s_1}"
echo "每个CPU中的核心数: ${cpu_s_2}"
echo "CPU逻辑个数: ${cpu_s_3}"
echo "总内存大小: ${mem_size}G"
echo "磁盘数: ${disk_s}"
echo "各磁盘大小:"
echo "${disk_size}"
echo "真实网卡数量: ${net_number}"
# 20G
echo "使用dd命令测试,物理读测试:"
for disk in `echo ${disk_name}`
do
for ((aa=0;aa<1;aa++))
do
echo "/dev/${disk}:"
sync;dd if=/dev/${disk} of=/dev/null bs=8k count=2500000 conv=fdatasync
done
done
echo "各个挂载点写测试(目录可用空间剩余 >=25G 写 20G 文件测试, <25G, 写所剩空间的1/2):"
echo "规避如下挂载点:${evade_mount[@]}"
echo "使用dd命令测试,物理写测试:"
for mount_test in `echo ${all_mount}`
do
if [[ ! ${evade_mount} =~ ${mount_test} ]];then
echo "${mount_test}:"
number=`df -P -m | grep -v ^Filesystem | awk -v mount_test_awk="${mount_test}" '{if ($6 == mount_test_awk && int($4/1024) <25 ) print $4*1024/8/2}'`
if [ -n "${number}" ];then
sync;dd if=/dev/zero of=${mount_test}/test_disk bs=8k count=${number} conv=fdatasync
else
sync;dd if=/dev/zero of=${mount_test}/test_disk bs=8k count=2500000 conv=fdatasync
fi
if [ -f ${mount_test}/test_disk ];then
rm -f ${mount_test}/test_disk
fi
fi
done
echo "网络测试:"
echo "网卡类型:"
for network in `echo "${network_card_s}"`
do
hh_number=`ethtool ${network} | grep "Supported ports: \[ TP \]" | wc -l`
if [ ${hh_number} -eq 1 ];then
echo -e "${network}: \c";ethtool ${network}| grep Speed | awk -F: '{print $2}'
fi
done
echo "使用 iperf3测试网络:"
# 服务端 iperf
# iperf3 -s -i 1 -f M
# 如下为客户端命令
echo "TCP测试:"
iperf3 -c ${iperf3_server_ip} -i 1 30 -f M
echo "UDP 测试:"
iperf3 -u -c ${iperf3_server_ip} -i 1 30 -f M