最近需要做资产列表,要采集DELL服务器的硬件信息,包括如下信息:

1、操作系统信息(类型,版本,内核,平台,主机名)

2、主板信息(厂商,机型,序列号)

3、CPU信息(型号,个数,物理核数)

4、内存(条数,单条容量)

5、磁盘(个数,单个容量,磁盘类型,Raid级别)


执行前请先安装MegaRAID,为了提高工作效率,我们使用SHELL脚本来实现,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/sh
 
#get os information
 
function  get_os_info() { 
     release=` cat  /etc/redhat-release  awk  '{print $1"_"$3}' `
     kname=` uname  -s`
     nodename=` uname  -n`
     kernal=` uname  -r`
     bit=` uname  -i`
     printf  "OS_RELEASE: $release" _ "$bit\n"
     printf  "OS_DETAIL: $kname $nodename $kernal $bit\n"
}
 
get_os_info
 
#get vendor, model, sn...
 
function  motherboard() { 
     vendor=`dmidecode -t 1| grep  "Manufacturer" | awk  '{print $2}' `
     model=`dmidecode -t 1| grep  "Product" | awk  '{print $4}' `
     sn=`dmidecode -t 1| grep  "Serial"  | awk  '{print $3}' `
     printf  "MODEL: $vendor $model\n"
     printf  "SN: $sn\n"
}
 
motherboard
 
function  memory() {
     count=`dmidecode  -q -t 17 2 | grep   "Size"  | grep  - v  "No Module Installed" | awk  '{print $2}' | uniq  -c| awk  '{print $1}' `
     capacity=`dmidecode  -q -t 17 2 | grep   "Size"  | grep  - v  "No Module Installed" | awk  '{print $2}' | uniq  -c| awk  '{print $2}' `
     capacity=` expr  $capacity / 1024`
     printf  "MEM: $count" * "$capacity" G "\n"
}
 
memory
 
function  cpuinfo() {
     cpu_model=` cat  /proc/cpuinfo | grep  "model name" | head  -1| awk  -F:  '{print $2}' `
     cpu_count=` cat  /proc/cpuinfo | grep  "core id" | grep  "0" | uniq  -c| awk  '{print $1}' `
     cpu_total_cores=` cat  /proc/cpuinfo | grep  "processor" | wc  -l`
     single_cores=` expr  $cpu_total_cores / $cpu_count`
     printf  "CPU:$cpu_model($cpu_count" * "$single_cores" Cores ")\n"
}
 
cpuinfo
 
function  diskinfo() {
     raidlevel=` /opt/MegaRAID/MegaCli/MegaCli64  -LDInfo -Lall -aALL | grep  "RAID" | awk  '{print $3}' | cut  -b 9-9`
     disknumber=` /opt/MegaRAID/MegaCli/MegaCli64  -LDInfo -Lall -aALL |  grep  "Drives" | awk  -F  ":"  '{print $2}' `
     disktype=` /opt/MegaRAID/MegaCli/MegaCli64  -PDList -aALL |  grep  "PD Type" | head  -1| awk  -F:  '{print $2}' `
     diskcapacity=` /opt/MegaRAID/MegaCli/MegaCli64  -PDList -aALL |  grep  "Raw Size"  head  -1 |  awk  '{print $3}' `
     printf  "DISK: $disknumber" * "$diskcapacity" GB "$disktype (Raid Level: $raidlevel)\n"
}
 
diskinfo


脚本执行结果如下:

1
2
3
4
5
6
7
OS_RELEASE: CentOS_6.5_x86_64
OS_DETAIL: Linux appsrv 2.6.32-431.el6.x86_64 x86_64
MODEL: Dell R730
SN: CDFGHJL
MEM: 4*8G
CPU: Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz(2*8Cores)
DISK: 2*279.396GB SAS (Raid Level: 1)