本发明涉及bmc测试技术领域,具体涉及远程redhat客户端下自动生成本地bmc压测脚本的方法。
背景技术:
验证24小时本地redhat系统下的sensor读取压力测试是bmc压力测试不可缺少的一项测试,对于不同项目服务器的bmcsensor名称和数量都有所不同,那么在编辑redhat本地系统下sensor压力测试的脚本时就需要大量的时间和精力,若将编辑脚本由自动编辑代替人工编辑将会大大减少编辑时间,降低边际成本,如何实现自动生成本地redhat系统下的压测脚本成为亟待解决的问题。
技术实现要素:
本发明的技术任务是提供远程redhat客户端下自动生成本地bmc压测脚本的方法,使用ipmitool工具读取的sdrelist可以自动生成在本地redhat系统下的压测脚本,以实现减少编辑时间,降低测试成本。
本发明解决其技术问题所采用的技术方案是:
远程redhat客户端下自动生成本地bmc压测脚本的方法,该方法在使用远程redhat客户端下自动生成本地redhat系统下bmcsensor压测脚本,使用远程ipmitoolsdrelist获取所有sensor,将其自动导入到本地redhat系统下的bmc压测脚本中,实现自动编辑;
进行bmc压测前首先安装ipmitool工具,使用ipmitool工具读取sdrelist自动生成在本地redhat系统下的压测脚本。
进一步的,所述ipmitoolsdrelist命令列举全部温度、电压和硬件状态传感器的名称和读值,通过远程截取需要的传感器名称和读值生成本地redhat系统下的压测脚本,检查bmc在本地长时间运行的情况下是否正常。
进一步的,该方法操作步骤如下:
1)、在redhat客户端下安装ipmitool工具;
2)、确保redhat客户端的网络与项目bmcip可以ping通;
3)、将sensor_reading_kcs_linux.sh脚本copy到redhat客户端桌面;
4)、给予可执行权限chmod777sensor_reading_kcs_linux.sh;
5)、在redhat客户端下执行以下程序:
./sensor_reading_kcs_linux.sh+bmc_ip+user+password;
6)、执行后提示“pleasewait20seconds……”,20秒后生产以该项目productname为首的sh文件,该sh文件包含所有sensor,将此sh文件copy到server本地的redhat下,即可进行本地bmcsensor压测。
所述的程序./sensor_reading_kcs_linux.sh+bmc_ip+user+password为./sensor_reading_kcs_linux.sh100.3.8.114adminiei2#1ow。
sensor_reading_kcs_linux.sh脚本内容为:
#!/bin/bash
#set-x
pn=`ipmitool-ilanplus-h$1-u$2-p$3fru|grep-i"productname"|awk'{print$4}'`
echo"pleasewait20seconds......"
count=`ipmitool-ilanplus-h$1-u$2-p$3sdrelist|wc-l`
#echo$count
functionlinux_kcs(){
echo"#!/bin/bash">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"echo"sensorreadingstressstart:date"">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"for((a=1;a<=1000;a++))">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"do">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"echo$atimesstressisrunning:%date%%time%>>./$pn/time.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"echo"=======================================">>./$pn/fru.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"ipmitoolfruprint>>./$pn/fru.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"echo"=======================================">>./$pn/chassis_status.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"ipmitoolchassisstatus>>./$pn/chassis_status.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"echo"=======================================">>./$pn/lan_print_1.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"ipmitoollanprint1>>./$pn/lan_print_1.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"echo"=======================================">>./$pn/lan_print_8.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"ipmitoollanprint1>>./$pn/lan_print_8.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"echo"=======================================">>./$pn/mc_info.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"ipmitoolmcinfo>>./$pn/mc_info.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"echo"=======================================">>./$pn/sel_elist.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"ipmitoolselelist>>./$pn/sel_elist.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"sleep3">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"done">>"$pn"_sensor_reading_of_linux_kcs.sh
}
linux_kcs
for((i=1;i<=$count;i++));
do
sensor=`ipmitool-ilanplus-h$1-u$2-p$3sdrelist|awk'{print$1}'|sed-n''$i'p'`
sed-i'4aipmitoolsdrelist|grep-i"'$sensor'">>./'$pn'/"'$sensor'".log'"$pn"_sensor_reading_of_linux_kcs.sh
done
进一步的,所述ipmitool工具为任意版本的ipmitool工具。
进一步的,所述sh文件为vancouver_sensor_reading_of_linux_kcs.sh,具体内容如下:
#!/bin/bash
echosensorreadingstressstart:date
for((a=1;a<=1000;a++))
do
ipmitoolsdrelist|grep-i"psu1_power">>./vancouver/"psu1_power".log
ipmitoolsdrelist|grep-i"psu0_power">>./vancouver/"psu0_power".log
ipmitoolsdrelist|grep-i"fan_power">>./vancouver/"fan_power".log
ipmitoolsdrelist|grep-i"mem_power">>./vancouver/"mem_power".log
ipmitoolsdrelist|grep-i"cpu_power">>./vancouver/"cpu_power".log
ipmitoolsdrelist|grep-i"total_power">>./vancouver/"total_power".log
ipmitoolsdrelist|grep-i"fan4_1">>./vancouver/"fan4_1".log
ipmitoolsdrelist|grep-i"fan4_0">>./vancouver/"fan4_0".log
ipmitoolsdrelist|grep-i"fan3_1">>./vancouver/"fan3_1".log
ipmitoolsdrelist|grep-i"fan3_0">>./vancouver/"fan3_0".log
ipmitoolsdrelist|grep-i"fan2_1">>./vancouver/"fan2_1".log
ipmitoolsdrelist|grep-i"fan2_0">>./vancouver/"fan2_0".log
ipmitoolsdrelist|grep-i"fan1_1">>./vancouver/"fan1_1".log
ipmitoolsdrelist|grep-i"fan1_0">>./vancouver/"fan1_0".log
ipmitoolsdrelist|grep-i"fan0_1">>./vancouver/"fan0_1".log
ipmitoolsdrelist|grep-i"fan0_0">>./vancouver/"fan0_0".log
ipmitoolsdrelist|grep-i"pch_vnn">>./vancouver/"pch_vnn".log
ipmitoolsdrelist|grep-i"pch_1.05v">>./vancouver/"pch_1.05v".log
ipmitoolsdrelist|grep-i"cpu1_vccio">>./vancouver/"cpu1_vccio".log
ipmitoolsdrelist|grep-i"cpu0_vccio">>./vancouver/"cpu0_vccio".log
ipmitoolsdrelist|grep-i"cpu1_vddq_ch345">>./vancouver/"cpu1_vddq_ch345".log
ipmitoolsdrelist|grep-i"cpu1_vddq_ch012">>./vancouver/"cpu1_vddq_ch012".log
ipmitoolsdrelist|grep-i"cpu0_vddq_ch345">>./vancouver/"cpu0_vddq_ch345".log
ipmitoolsdrelist|grep-i"cpu0_vddq_ch012">>./vancouver/"cpu0_vddq_ch012".log
ipmitoolsdrelist|grep-i"cpu1_vcore">>./vancouver/"cpu1_vcore".log
ipmitoolsdrelist|grep-i"cpu0_vcore">>./vancouver/"cpu0_vcore".log
ipmitoolsdrelist|grep-i"sys_12v">>./vancouver/"sys_12v".log
ipmitoolsdrelist|grep-i"sys_5v">>./vancouver/"sys_5v".log
ipmitoolsdrelist|grep-i"sys_3.3v">>./vancouver/"sys_3.3v".log
ipmitoolsdrelist|grep-i"bmc_boot_up">>./vancouver/"bmc_boot_up".log
ipmitoolsdrelist|grep-i"gpu7_temp">>./vancouver/"gpu7_temp".log
ipmitoolsdrelist|grep-i"gpu6_temp">>./vancouver/"gpu6_temp".log
ipmitoolsdrelist|grep-i"gpu5_temp">>./vancouver/"gpu5_temp".log
ipmitoolsdrelist|grep-i"gpu4_temp">>./vancouver/"gpu4_temp".log
ipmitoolsdrelist|grep-i"gpu3_temp">>./vancouver/"gpu3_temp".log
ipmitoolsdrelist|grep-i"gpu2_temp">>./vancouver/"gpu2_temp".log
ipmitoolsdrelist|grep-i"gpu1_temp">>./vancouver/"gpu1_temp".log
ipmitoolsdrelist|grep-i"gpu0_temp">>./vancouver/"gpu0_temp".log
ipmitoolsdrelist|grep-i"pch_temp">>./vancouver/"pch_temp".log
ipmitoolsdrelist|grep-i"cpu1_temp">>./vancouver/"cpu1_temp".log
ipmitoolsdrelist|grep-i"cpu0_temp">>./vancouver/"cpu0_temp".log
ipmitoolsdrelist|grep-i"outlet_temp">>./vancouver/"outlet_temp".log
ipmitoolsdrelist|grep-i"inlet_temp">>./vancouver/"inlet_temp".log
echotimesstressisrunning:%date%%time%>>./vancouver/time.log
echo=======================================>>./vancouver/fru.log
ipmitoolfruprint>>./vancouver/fru.log
echo=======================================>>./vancouver/chassis_status.log
ipmitoolchassisstatus>>./vancouver/chassis_status.log
echo=======================================>>./vancouver/lan_print_1.log
ipmitoollanprint1>>./vancouver/lan_print_1.log
echo=======================================>>./vancouver/lan_print_8.log
ipmitoollanprint1>>./vancouver/lan_print_8.log
echo=======================================>>./vancouver/mc_info.log
ipmitoolmcinfo>>./vancouver/mc_info.log
echo=======================================>>./vancouver/sel_elist.log
ipmitoolselelist>>./vancouver/sel_elist.log
sleep3
done。
本发明的远程redhat客户端下自动生成本地bmc压测脚本的方法与现有技术相比,具有以下有益效果:
使用ipmitool工具读取的sdrelist可以自动生成在本地redhat系统下的压测脚本,以达到减少编辑压力测试脚本时间,降低测试成本,提高测试准确度的目的。实现自动编辑,可省去一部分人力,降低人为编辑错的风险,提高了测试工作效率,改进后编辑过程更加方便,编辑手段更加简洁,即使不知道bmcsensor名称和数量,依然可以进行测试,且编辑无误。
具体实施方式
下面结合具体实施例对本发明作进一步说明。
远程redhat客户端下自动生成本地bmc压测脚本的方法,该方法在使用远程redhat客户端下自动生成本地redhat系统下bmcsensor压测脚本进行bmc压测前首先安装ipmitool工具,使用ipmitool工具读取sdrelist自动生成在本地redhat系统下的压测脚本。
其中,ipmitoolsdrelist命令可以列举全部温度、电压和硬件状态等传感器的名称和读值,通过远程截取需要的传感器名称和状态等读值生成本地redhat系统下的压测脚本,来检查bmc在本地长时间运行的情况下是否正常。
该方法操作步骤如下:
1)、在redhat客户端下安装ipmitool工具,所述ipmitool工具为任意版本的ipmitool工具;
2)、确保redhat客户端的网络与项目bmcip可以ping通;
3)、将sensor_reading_kcs_linux.sh脚本copy到redhat客户端桌面;
4)、给予可执行权限chmod777sensor_reading_kcs_linux.sh;
5)、在redhat客户端下执行
./sensor_reading_kcs_linux.sh+bmc_ip+user+password,例如./sensor_reading_kcs_linux.sh100.3.8.114adminiei2#1ow;
以下是sensor_reading_kcs_linux.sh脚本内容
#!/bin/bash
#set-x
pn=`ipmitool-ilanplus-h$1-u$2-p$3fru|grep-i"productname"|awk'{print$4}'`
echo"pleasewait20seconds......"
count=`ipmitool-ilanplus-h$1-u$2-p$3sdrelist|wc-l`
#echo$count
functionlinux_kcs(){
echo"#!/bin/bash">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"echo"sensorreadingstressstart:date"">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"for((a=1;a<=1000;a++))">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"do">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"echo$atimesstressisrunning:%date%%time%>>./$pn/time.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"echo"=======================================">>./$pn/fru.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"ipmitoolfruprint>>./$pn/fru.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"echo"=======================================">>./$pn/chassis_status.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"ipmitoolchassisstatus>>./$pn/chassis_status.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"echo"=======================================">>./$pn/lan_print_1.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"ipmitoollanprint1>>./$pn/lan_print_1.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"echo"=======================================">>./$pn/lan_print_8.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"ipmitoollanprint1>>./$pn/lan_print_8.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"echo"=======================================">>./$pn/mc_info.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"ipmitoolmcinfo>>./$pn/mc_info.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"echo"=======================================">>./$pn/sel_elist.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"ipmitoolselelist>>./$pn/sel_elist.log">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"sleep3">>"$pn"_sensor_reading_of_linux_kcs.sh
echo"done">>"$pn"_sensor_reading_of_linux_kcs.sh
}
linux_kcs
for((i=1;i<=$count;i++));
do
sensor=`ipmitool-ilanplus-h$1-u$2-p$3sdrelist|awk'{print$1}'|sed-n''$i'p'`
sed-i'4aipmitoolsdrelist|grep-i"'$sensor'">>./'$pn'/"'$sensor'".log'"$pn"_sensor_reading_of_linux_kcs.sh
done
6)、执行后提示“pleasewait20seconds……”,20秒后生产以该项目productname为首的sh文件,该sh文件包含所有sensor,将此sh文件copy到server本地的redhat下,即可进行本地bmcsensor压测,例如生成vancouver_sensor_reading_of_linux_kcs.sh,具体内容如下:
#!/bin/bash
echosensorreadingstressstart:date
for((a=1;a<=1000;a++))
do
ipmitoolsdrelist|grep-i"psu1_power">>./vancouver/"psu1_power".log
ipmitoolsdrelist|grep-i"psu0_power">>./vancouver/"psu0_power".log
ipmitoolsdrelist|grep-i"fan_power">>./vancouver/"fan_power".log
ipmitoolsdrelist|grep-i"mem_power">>./vancouver/"mem_power".log
ipmitoolsdrelist|grep-i"cpu_power">>./vancouver/"cpu_power".log
ipmitoolsdrelist|grep-i"total_power">>./vancouver/"total_power".log
ipmitoolsdrelist|grep-i"fan4_1">>./vancouver/"fan4_1".log
ipmitoolsdrelist|grep-i"fan4_0">>./vancouver/"fan4_0".log
ipmitoolsdrelist|grep-i"fan3_1">>./vancouver/"fan3_1".log
ipmitoolsdrelist|grep-i"fan3_0">>./vancouver/"fan3_0".log
ipmitoolsdrelist|grep-i"fan2_1">>./vancouver/"fan2_1".log
ipmitoolsdrelist|grep-i"fan2_0">>./vancouver/"fan2_0".log
ipmitoolsdrelist|grep-i"fan1_1">>./vancouver/"fan1_1".log
ipmitoolsdrelist|grep-i"fan1_0">>./vancouver/"fan1_0".log
ipmitoolsdrelist|grep-i"fan0_1">>./vancouver/"fan0_1".log
ipmitoolsdrelist|grep-i"fan0_0">>./vancouver/"fan0_0".log
ipmitoolsdrelist|grep-i"pch_vnn">>./vancouver/"pch_vnn".log
ipmitoolsdrelist|grep-i"pch_1.05v">>./vancouver/"pch_1.05v".log
ipmitoolsdrelist|grep-i"cpu1_vccio">>./vancouver/"cpu1_vccio".log
ipmitoolsdrelist|grep-i"cpu0_vccio">>./vancouver/"cpu0_vccio".log
ipmitoolsdrelist|grep-i"cpu1_vddq_ch345">>./vancouver/"cpu1_vddq_ch345".log
ipmitoolsdrelist|grep-i"cpu1_vddq_ch012">>./vancouver/"cpu1_vddq_ch012".log
ipmitoolsdrelist|grep-i"cpu0_vddq_ch345">>./vancouver/"cpu0_vddq_ch345".log
ipmitoolsdrelist|grep-i"cpu0_vddq_ch012">>./vancouver/"cpu0_vddq_ch012".log
ipmitoolsdrelist|grep-i"cpu1_vcore">>./vancouver/"cpu1_vcore".log
ipmitoolsdrelist|grep-i"cpu0_vcore">>./vancouver/"cpu0_vcore".log
ipmitoolsdrelist|grep-i"sys_12v">>./vancouver/"sys_12v".log
ipmitoolsdrelist|grep-i"sys_5v">>./vancouver/"sys_5v".log
ipmitoolsdrelist|grep-i"sys_3.3v">>./vancouver/"sys_3.3v".log
ipmitoolsdrelist|grep-i"bmc_boot_up">>./vancouver/"bmc_boot_up".log
ipmitoolsdrelist|grep-i"gpu7_temp">>./vancouver/"gpu7_temp".log
ipmitoolsdrelist|grep-i"gpu6_temp">>./vancouver/"gpu6_temp".log
ipmitoolsdrelist|grep-i"gpu5_temp">>./vancouver/"gpu5_temp".log
ipmitoolsdrelist|grep-i"gpu4_temp">>./vancouver/"gpu4_temp".log
ipmitoolsdrelist|grep-i"gpu3_temp">>./vancouver/"gpu3_temp".log
ipmitoolsdrelist|grep-i"gpu2_temp">>./vancouver/"gpu2_temp".log
ipmitoolsdrelist|grep-i"gpu1_temp">>./vancouver/"gpu1_temp".log
ipmitoolsdrelist|grep-i"gpu0_temp">>./vancouver/"gpu0_temp".log
ipmitoolsdrelist|grep-i"pch_temp">>./vancouver/"pch_temp".log
ipmitoolsdrelist|grep-i"cpu1_temp">>./vancouver/"cpu1_temp".log
ipmitoolsdrelist|grep-i"cpu0_temp">>./vancouver/"cpu0_temp".log
ipmitoolsdrelist|grep-i"outlet_temp">>./vancouver/"outlet_temp".log
ipmitoolsdrelist|grep-i"inlet_temp">>./vancouver/"inlet_temp".log
echotimesstressisrunning:%date%%time%>>./vancouver/time.log
echo=======================================>>./vancouver/fru.log
ipmitoolfruprint>>./vancouver/fru.log
echo=======================================>>./vancouver/chassis_status.log
ipmitoolchassisstatus>>./vancouver/chassis_status.log
echo=======================================>>./vancouver/lan_print_1.log
ipmitoollanprint1>>./vancouver/lan_print_1.log
echo=======================================>>./vancouver/lan_print_8.log
ipmitoollanprint1>>./vancouver/lan_print_8.log
echo=======================================>>./vancouver/mc_info.log
ipmitoolmcinfo>>./vancouver/mc_info.log
echo=======================================>>./vancouver/sel_elist.log
ipmitoolselelist>>./vancouver/sel_elist.log
sleep3
done。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。