做了一个shell脚本查询硬件信息(仅在centos7和rh7做了测试)
第一次写博客,里面的编辑排版还不太会,有些内容没显示全!
脚本下载链接放在顶部了,下面是写的内容:
#! /bin/bash
echo -e “\033[32m系统信息\033[0m\n”
echo -e “系统版本:cat /etc/redhat-release
”
echo -e “内核版本:uname -a | awk '{print $1,$3}'
”
echo -e “服务器制造商:dmidecode | grep "Manufacturer" | sed -n '1p' | awk -F':' '{print $2}'
”
echo -e “服务器型号:dmidecode | grep "Product Name" | sed -n '1p' | awk -F':' '{print $2}'
”
echo -e “服务器序列号:dmidecode | grep "Serial Number" | sed -n '1p' | awk -F':' '{print $2}'
”
echo -e “主板序列号:dmidecode | grep "Serial Number" | sed -n '2p' | awk -F':' '{print $2}'
”
rai=lspci | grep -i raid | cut -d ':' -f 3
echo -e “raid卡型号:if [ -z "$rai" ];then echo -e "无raid卡" else echo -e "$rai" fi
”
echo -e “\033[32mCPU处理器信息\033[0m\n”
echo -e “CPU型号:cat /proc/cpuinfo | grep "model name" | uniq | awk -F':' '{print $2}'
”
n=cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
m=cat /proc/cpuinfo | grep "cpu cores" | uniq | awk -F': ' '{print $2}'
z=cat /proc/cpuinfo | grep "sibling" | wc -l
i=expr $n \* $m
echo -e “超线程状态:if [ $i -lt $z ]; then echo "已开启" elif [ $i = $z ]; then echo "未开启" else echo "无结果" fi
”
echo -e “CPU物理个数:
n
个
"
e
c
h
o
−
e
"
每个
C
P
U
核数
:
n个" echo -e "每个CPU核数:
n个"echo−e"每个CPU核数:m核”
echo -e “CPU总核数:$i核”
echo -e “逻辑CPU总数:cat /proc/cpuinfo | grep "processor" |wc -l
核”
echo -e “CPU内核频率:cat /proc/cpuinfo | sort | grep MHz | uniq | awk -F':' '{print $2"MHz"}'| sed '2,$s/^/\t /'
”
echo -e “\033[32m内存信息\033[0m\n”
sum=dmidecode -t memory | grep "Size" | grep -v "No Module Installed" | awk '{print $2}' | awk '{sum += $1}; END {print sum}'
sumhead=dmidecode -t memory | grep "Size" | grep -v "No Module Installed" | awk '{print $3}'| head -1
if [ $sumhead = “MB” ];then
echo -e “内存大小:expr $sum / 1024
GB”
elif [ $sumhead = “GB” ];then
echo -e “内存大小:dmidecode -t memory | grep "Size" | grep -v "No Module Installed" | awk '{print $2}' | awk '{sum += $1}; END {print sum}'
GB”
fi
echo -e “支持最大的内存容量:dmidecode | grep "Maximum Capacity" | uniq | awk -F':' '{print $2}'
”
echo -e “内存插槽总数:dmidecode -t 17 | grep -A5 "Memory Device" | grep Size | wc -l
个槽位”
echo -e “已占用插槽数:dmidecode -t 17 | grep -A5 "Memory Device" | grep Size | grep -v "No Module Installed"|wc -l
个槽位”
vol=(dmidecode | grep -A5 "Memory Device" |grep -i Size | grep -v "No"| grep -v "Range Size" | awk -F':' '{print $2}' | sed s/[[:space:]]//g | xargs
)
fre=(dmidecode | grep "Clock Speed" | grep -v "Unknown" | awk '{print $4"MHz"}' | xargs
)
echo -e “每个内存条大小/频率:for vofr in ${!vol[@]}; do echo ${vol[vofr]}/${fre[vofr]}; done | xargs
”
echo -e “\033[32m网卡信息\033[0m\n”
echo -e “网卡型号:lspci | grep -i ethernet |awk -F':' '{print $3}' | sed '2,$s/^/\t /'
”
et=ip a | grep -i broadcast | awk -F':' '{print $2}' | sed s/[[:space:]]//g | grep -v "bond"
for eh in $et;
do
etl=ethtool $eh | sed -n "2p" | awk -F':' '{print $2}' | sed s/[[:space:]]//g
maccx=ifconfig $eh | grep -i hwaddr | awk '{print $5}'
connection=ethtool $eh | grep -i "link detected" | awk -F':' '{print $2}' | sed s/[[:space:]]//g
speeds=ethtool $eh | grep -i speed | awk -F':' '{print $2}' | sed s/[[:space:]]//g
if [ “
e
t
l
"
=
"
[
T
P
]
"
]
;
t
h
e
n
i
f
[
"
etl" = "[TP]" ];then if [ "
etl"="[TP]"];thenif["connection” = “no” ];then
echo “
e
h
−
电口
−
未接线
−
eh-电口-未接线-
eh−电口−未接线−maccx”
elif [ “
c
o
n
n
e
c
t
i
o
n
"
=
"
y
e
s
"
]
;
t
h
e
n
i
f
[
"
connection" = "yes" ];then if [ "
connection"="yes"];thenif["speeds” = “100Mb/s” ];then
echo “
e
h
−
电口
−
已接线
−
100
M
b
/
s
−
eh-电口-已接线-100Mb/s-
eh−电口−已接线−100Mb/s−maccx”
elif [ “
s
p
e
e
d
s
"
=
"
1000
M
b
/
s
"
]
;
t
h
e
n
e
c
h
o
"
speeds" = "1000Mb/s" ];then echo "
speeds"="1000Mb/s"];thenecho"eh-电口-已接线-1000Mb/s-
m
a
c
c
x
"
e
l
i
f
[
"
maccx" elif [ "
maccx"elif["speeds” = “10000Mb/s” ];then
echo “
e
h
−
电口
−
已接线
−
10000
M
b
/
s
−
eh-电口-已接线-10000Mb/s-
eh−电口−已接线−10000Mb/s−maccx”
else echo “
e
h
−
电口
−
已接线
−
未知
−
eh-电口-已接线-未知-
eh−电口−已接线−未知−maccx”
fi
else echo “未知”
fi
elif [ “
e
t
l
"
=
"
[
F
I
B
R
E
]
"
]
;
t
h
e
n
i
f
[
"
etl" = "[FIBRE]" ];then if [ "
etl"="[FIBRE]"];thenif["connection” = “no” ];then
echo “
e
h
−
光口
−
eh-光口-
eh−光口−maccx-未接线”
elif [ “
c
o
n
n
e
c
t
i
o
n
"
=
"
y
e
s
"
]
;
t
h
e
n
i
f
[
"
connection" = "yes" ];then if [ "
connection"="yes"];thenif["speeds” = “100Mb/s” ];then
echo “
e
h
−
光口
−
已接线
−
100
M
b
/
s
−
eh-光口-已接线-100Mb/s-
eh−光口−已接线−100Mb/s−maccx”
elif [ “
s
p
e
e
d
s
"
=
"
1000
M
b
/
s
"
]
;
t
h
e
n
e
c
h
o
"
speeds" = "1000Mb/s" ];then echo "
speeds"="1000Mb/s"];thenecho"eh-光口-已接线-1000Mb/s-
m
a
c
c
x
"
e
l
i
f
[
"
maccx" elif [ "
maccx"elif["speeds” = “10000Mb/s” ];then
echo “
e
h
−
光口
−
已接线
−
10000
M
b
/
s
−
eh-光口-已接线-10000Mb/s-
eh−光口−已接线−10000Mb/s−maccx”
else echo “
e
h
−
光口
−
已接线
−
未知
−
eh-光口-已接线-未知-
eh−光口−已接线−未知−maccx”
fi
else echo “未知”
fi
else echo “无接口类型”
fi
done | sed ‘1s/^/网卡数据-MAC地址:/; 2,$s/^/\t\t /’