之前工作管理过一批备机,就写了一个脚本用来检查目前的备机状况,看能否使用,网上关于各个厂商的硬件命令感觉挺少的,今天正好看到这个脚本,就放到博客上,有需要的就拿走吧,脚本功能说明:
1、检查目前服务器的一些硬件配置,包括机型、sn、cpu类型、内存大小等。
2、判断机器类型(当时只有dell的R410和R710两种机型),然后检查磁盘是否有故障。
3、此脚本只在dell机器上测试过,其它机型未测试。
4、使用前需要安装ipmitool,SMART(yum install smartmontools).
以下是脚本内容:
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 57 58 59 60 61 62 63 |
#!/bin/sh # # #author: glacier #date:20141114 >~/checkinfo/info.txt >~/checkinfo/r410_diskstatus.txt >~/checkinfo/r710_diskstatus.txt IPINFO=$(grep -v ^# iplist ) DMIDECODE=/usr/sbin/dmidecode INFO() { _ip=$1 type=$(ssh $_ip $DMIDECODE | grep Product | awk -F: '{print $2}' | head -1) sn=$(ssh $_ip $DMIDECODE | grep -i "serial number"| head -1 |awk -F: '{print $2}') cpu=$(ssh $_ip $DMIDECODE | grep -i Cpu | grep -i version | head -1| awk '{print $5,$6,$7,$8}') mem=$(ssh $_ip free -g | grep Mem |awk -F: '{print $2}'|cut -c 1-15) memnum=$(ssh $_ip $DMIDECODE | grep -A16 "Memory Device$" | grep Size |wc -l) ilo_ip=$(ssh $_ip /usr/bin/ipmitool lan print |grep IP.*[0-1].* | head -1 |awk -F: '{print $2}') ilo_mac=$(ssh $_ip /usr/bin/ipmitool lan print | grep "MAC Address" |awk '{print $4}') disk=$(ssh $_ip /sbin/fdisk -l| grep "Disk /dev*" |awk -F: '{print $2}' |cut -d, -f1) echo $type $sn $cpu $mem $memnum $ilo_ip $ilo_mac $disk } DISKSTATUS() { _ip=$1 #while [ $_ip != null ] #do type=$(ssh $_ip $DMIDECODE | grep "Product Name" | head -1 |awk -F: '{print $2}' |awk '{print $2}') sn=$(ssh $_ip $DMIDECODE | grep -i "serial number"| head -1 |awk -F: '{print $2}') cpu=$(ssh $_ip $DMIDECODE |grep -i Cpu | grep -i version | head -1| awk '{print $5}') mem=$(ssh $_ip free -g | grep Mem |awk -F: '{print $2}'|cut -c 1-15) if [ $type == "R410" ];then diskstatus=$(ssh $_ip /usr/sbin/smartctl -H /dev/sda | grep SMART |awk -F: '{print $2}') echo $sn $diskstatus >>r410_diskstatus.txt elif [ $type == "R710" ] && ([ $cpu == "E5506" ] || [ $cpu == "E5606" ]);then for num in `seq 0 5` do R710_one=$(ssh $_ip /usr/sbin/smartctl -H -d megaraid,$num /dev/sda | grep SMART |awk -F: '{print $2}') echo $sn $num $R710_one >>r710_diskstatus.txt done elif [ $type == "R710" ] && [ $cpu == "E5620" ];then for num2 in `seq 0 7` do R710_two=$(ssh $_ip /usr/sbin/smartctl -H -d megaraid,$num2 /dev/sda | grep SMART |awk -F: '{print $2}') echo $sn $num2 $R710_two >>r710_diskstatus.txt done fi #done } for i in $IPINFO do INFO $i >>info.txt DISKSTATUS $i done |