#!/bin/sh # pkg=panicsel # isel=showsel # ipef=pefconfig # ireset=hwreset pkg=ipmiutil isel=isel ipef=ilan ireset=ireset env() { if [ -x /usr/local/bin/$isel ];then PATH_EXEC="/usr/local/bin" fi if [ -x /usr/sbin/$isel ];then PATH_EXEC="/usr/sbin" fi } check_os() { if [ -d "/etc/redhat-release" ];then linux_type="redhat" fi if [ -d "/etc/SuSE-release" ];then linux_type="suse" fi if [ -d "/usr/src/hardhat" ];then linux_type="hardhat" fi } check_driver() { lsmod|grep "ipmi_comb" > /dev/null 2>&1 if [ $? -eq 0 ];then echo "The ipmi_comb driver has been inserted already" Major=`cat /proc/devices|grep imb|awk '{print $1}'` if [ ! -c /dev/imb ];then mknod /dev/imb c $Major 0 return 0 fi fi modprobe "ipmi_comb" > /dev/null 2>&1 if [ $? -eq 0 ];then echo "The ipmi_comb driver be inserted corretly" else # echo "There are no ipmi driver or ipmi driver can not be inserted correctly" return 0 fi lsmod|grep "ipmi_comb" > /dev/null 2>&1 if [ $? -eq 0 ];then Major=`cat /proc/devices|grep imb|awk '{print $1}'` if [ ! -c /dev/imb ];then mknod /dev/imb c $Major 0 fi fi } prepare() { env # check_driver } Test_kernelpatch() { oldnum=0 newnum=0 prepare DIR=`pwd` if [ -f /tmp/mark ];then MARK=`cat /tmp/mark` else MARK=0 fi $PATH_EXEC/$ipef -A $1 -C public if [ $? -ne 0 ];then echo "Pefconfig incorrectly,pls check your machine" exit 1 fi cd /usr/share/$pkg if [ "$MARK" -ne "1" ];then cd $DIR cp -f ./dopanic /usr/share/$pkg/ echo "Init a panic for $pkg..." $PATH_EXEC/$isel -s|grep -c "OS Critical Stop" > /tmp/ocs_num sync sleep 2 echo 1 > /tmp/mark cd /usr/share/$pkg insmod -f ./dopanic fi echo "check the result for $pkg..." read oldnum < /tmp/ocs_num $PATH_EXEC/$isel -s |grep -c "OS Critical Stop" > /tmp/ocs_num read newnum < /tmp/ocs_num let oldnum=oldnum+1 if [ $newnum -eq $oldnum ] then echo "PASS:KernelPactch:Panic sel insert record" return 0 else echo "FAIL: Kernel PatchPanic sel insert record" return 1 fi rm -f /tmp/mark } ts_hwresetr() { prepare if [ -f /tmp/count ];then COUNT=`cat /tmp/count` else COUNT=0 fi if [ "$COUNT" -ne "1" ];then $PATH_EXEC/$isel -c >/dev/null 2>&1 echo 1 > /tmp/count $PATH_EXEC/$ireset #reset the system fi $PATH_EXEC/$isel > /tmp/hwreset 2>&1 isevent=`cat /tmp/hwreset|grep "System Event"` isboot=`cat /tmp/hwreset|grep "System Boot"` if [ -n "$isevent" ] && [ -n "$isboot" ];then echo "PASS: $pkg power reset" return 0 else echo "FAIL: $pkg power reset" return 1 fi rm -f /tmp/count } ts_hwresetc() { prepare if [ -f /tmp/hwresetc ];then MARK=`cat /tmp/hwresetc` else MARK=0 fi if [ "$MARK" -ne "1" ];then $PATH_EXEC/$isel -c >/dev/null 2>&1 echo 1 > /tmp/hwresetc $PATH_EXEC/$ireset -c #reset the system fi $PATH_EXEC/$isel >/tmp/hwresetc 2>&1 power=`cat /tmp/hwresetc|grep "Power Off/Down"` if [ -n "$power" ];then echo "PASS: $pkg power cycle" return 0 else echo "FAIL: $pkg power cycle" return 1 fi rm -f /tmp/hwresetc }