一种实现同时抓取Rack整机柜所有节点信息的方法技术领域
本发明涉及Rack整机柜服务器软件技术领域,具体涉及一种实现同时抓取Rack整机柜所有节点信息的方法,主要实现对整机柜服务器所有节点BIOS信息、BMC信息、bmc日志、系统日志的抓取,并自动筛选bmc、系统日之出现的异常,已方便测试、方便debug。
背景技术
Rack整机柜节点数量多,在整机柜基本功能测试、稳定性测试等多项测试中,需要查看所有节点的bios版本、BMC版本、BMC日志、系统日志等,如果逐个节点接显示器和键盘是不现实的,节点间可以通过SSH协议来查询和管理各节点,出货时附带交换机,各节点间可通过网口连通,可以选取其中的一个节点,在基于SSH协议管理的基础上,可以用脚本实现整机柜所有信息信息的抓取以及日志的抓取和筛选。
发明内容
本发明要解决的技术问题是:本发明提出一种实现同时抓取Rack整机柜所有节点信息的方法,能够快速抓取所有节点的信息,并且快速筛测试中异常日志。
本发明所采用的技术方案为:
所述方法具体实现过程如下:
1)搭建测试平台,整机柜安装linux系统,准备测试环境,配置所有节点SSH无密码访问;
2)编写shell脚本,对所有节点信息和日志进行抓取,并对日志筛选,如果日志无异常返回pass结果,如果日志有异常,列出异常日志信息。
所述节点信息包括:bmc信息、bios信息、OS信息,日志包括:bmc日志、系统日志。
所述bmc信息通过执行ipmitoolmcinfo读取。
所述bios信息通过dmidecode的命令抓取。
本发明的有益效果为:
本发明方法通过shell脚本实现同时抓取所有节点bios/bmc版本信息以及bmc/系统日志,并对异常日志进行筛选,以方便测试和debug,实用于rack等高密度服务器整机柜。
具体实施方式
下面结合具体实施方式对本发明进一步说明:
实施例1:
一种实现同时抓取Rack整机柜所有节点信息的方法,所述方法具体实现过程如下:
1)搭建测试平台,整机柜安装linux系统(如redhat6.4),准备测试环境,配置所有节点SSH无密码访问;
2)编写shell脚本,对所有节点信息和日志进行抓取,并对日志筛选,如果日志无异常返回pass结果,如果日志有异常,列出异常日志信息。
申请号201510012043.6一种Rack机柜ssh无密码批量访问各节点的方法,基于SSH协议,在Rack机柜各节点网络连通的基础上,刷新Rack机柜所有节点BMC时,把SSH与linuxbash语言相结合,实现通过一节点SSH无密码访问其它所有节点,进而自动实现各节点间的无密码访问,大大节省工作时间,减少工作量、提高工作效率;极大的提高Rack机柜中查询和管理各节点的效率。
实施例2:
在实施例1的基础上,本实施例所述节点信息包括:bmc信息、bios信息、OS信息,日志包括:bmc日志、系统日志。
实施例3:
在实施例2的基础上,本实施例所述bmc信息通过执行ipmitoolmcinfo读取。
实施例4:
在实施例2的基础上,本实施例所述bios信息通过dmidecode的命令抓取。
实施例5:
本实施例所述shell脚本的实现内容如下:
1.抓取bmc信息:
functionbmcinfo()
{
/etc/init.d/ipmistart
ipmitoolmcinfo
BMC_FV=`ipmitoolmcinfo|grep"FirmwareRevision"|awk-F":"'{print$2}'|sed's/^\s*//g'`
IPMI_version=`ipmitoolmcinfo|grep"IPMIVersion"|awk-F":"'{print$2}'|sed's/^\s*//g'`
time=`date"+%Y-%m-%d%H:%M:%S"`
printf"%-25s%-25s%-20s\n""date""BMC_Firmware_Version""IPMI_version">>$Cur_Dir/logcheck/osinstall/bmcinfo
printf"%-25s%-25s%-20s\n""$time""$BMC_FV""$IPMI_version">>$Cur_Dir/logcheck/osinstall/bmcinfo
echo-n"\n">>$Cur_Dir/logcheck/osinstall/bmcinfo
}
Bmc是通过ipmitool工具来管理的,执行ipmitoolmcinfo可以读取bmc的所有基本信息,该段程序可以抓取bmc的版本信息。
2.抓取bios信息:
functionbiosinfo()
{
bios_vendor=`dmidecode|grep"DMItype0"-A25|grep"Vendor"|awk-F":"'{print$2}'|sed's/^\s*//g'`
bios_version=`dmidecode|grep"DMItype0"-A25|grep"Version"|awk-F":"'{print$2}'|sed's/^\s*//g'`
bios_release=`dmidecode|grep"DMItype0"-A25|grep"Release"|awk-F":"'{print$2}'|sed's/^\s*//g'`
printf"%-25s%-50s%-20s%-25s\n""date""BIOS_Vendor""BIOS_Version""BIOS_Release_Date">>$Cur_Dir/logcheck/osinstall/biosinfo
printf"%-25s%-50s%-20s%-25s\n""$time""$bios_vendor""$bios_version""$bios_release">>$Cur_Dir/logcheck/osinstall/biosinfo
echo-n"\n">>$Cur_Dir/logcheck/osinstall/biosinfo
}
dmidecode的命令能抓取到机器的bios/cpu/内存等基本信息,执行该段程序可以刷选出bios的版本信息。
3.抓取OS信息:
functionosinfo()
{
time=`date"+%Y-%m-%d%H:%M:%"`
os=`lsb_release-a|grep"Description"|awk-F":"'{print$2}'|sed's/^\s*//g'`
kernel_version=`uname-r`
printf"%-20s%-30s%-25s\n""Date""OS""kernel">>$Cur_Dir/logcheck/osinstall/systeminfo
printf"%-20s%-30s%-25s\n""$time""$os""$kernel_version">>$Cur_Dir/logcheck/osinstall/systeminfo
}
执行该段程序可以抓取出os的版本及kernel版本。
4.抓取BMC信息:
functionbmccheck()
{
time=`date"+%Y-%m-%d%H:%M:%"`
/etc/init.d/ipmistart
printf"%-20s%-15s\n""$time""bmcsellog">>$Cur_Dir/logcheck/osinstall/bmclog
ipmitoolselelist>>$Cur_Dir/logcheck/osinstall/bmclog
echo-ne"\n">>$Cur_Dir/logcheck/osinstall/bmclog
printf"%s\n""sdrstatuscheck">>$Cur_Dir/logcheck/osinstall/bmclog
ipmitoolsdrelist|awk-F"|"'{if($3~/ok/)print"pass";elseprint$0}'>>$Cur_Dir/logcheck/osinstall/bmclog
ipmitoolselclear
}
执行该段程序,可以实现bmc日志的抓取,并筛选出异常日志。
5.抓取系统日志:
functionmessages()
{
date"+%Y-%m-%d%H:%M:%">>$Cur_Dir/logcheck/osinstall/dmesglog
dmesg|egrep"Error|error|Machine|resetting|ECC|warning">>$Cur_Dir/logcheck/osinstall/dmesglog
}
functionmceinfo()
{
ls-l/var/log|grep"mcelog">>$Cur_Dir/logcheck/osinstall/mcelog_res
cat/var/log/mcelog>>$Cur_Dir/logcheck/osinstall/mcelog_res
}
该段程序实现系统messages/mcelog/dmesg日志的抓取及异常日志的筛选。
6.实现所有节点信息和日志的同时抓取:
functionshab()
{
rsh$1$2
}
foriin{1..40}
do
echo"---------------------------------------------$i-----------------------------------------"
shabcu$i"$1"&'
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。