DELL伺服器硬體資訊採集SHELL指令碼

天府雲創發表於2016-12-08

最近需要做資產列表,要採集DELL伺服器的硬體資訊,包括如下資訊:

1、作業系統資訊(型別,版本,核心,平臺,主機名)

2、主機板資訊(廠商,機型,序列號)

3、CPU資訊(型號,個數,物理核數)

4、記憶體(條數,單條容量)

5、磁碟(個數,單個容量,磁碟型別,Raid級別)

 

執行前請先安裝MegaRAID,為了提高工作效率,我們使用SHELL指令碼來實現,如下:

 
#!/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

 

指令碼執行結果如下:

 
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)

相關文章