百度首页 | 百度空间
 
查看文章
 
太保一线通系统上线相关检测脚本
2008-04-21 16:56

#!/bin/sh
###########################################################################
#filename:setupCheck.sh
#功能:一线通安装检查
#1.检查一线通必须的10张表是否已新建
#2.检查系统环境变量是否设置
#3.检查一线通相关表的taskid字段属性有没有修改
#4.检查bmdm_org表有没有增加字段uporgid
#5.检查C80400和X8000000服务有没有启动
#
#运行方法:
#chmod +x setupCheck.sh
#./setupCheck.sh
#或
#sh setupCheck.sh
###########################################################################

#临时目录
tmpDIR="$HOME/tmp/YXT"
if [ ! -d $tmpDIR ];then
mkdir -p $tmpDIR
fi
cd $tmpDIR

if [ "$REMOTEDB" = "" ];then
REMOTEDB="remotedb"
fi
dbaccess='alias dbaccess'

trap "rm -f $tmpDIR/*.$$" 0,1,2,3,9,11,15

#一线通新建的表
creatTable="losstaskinfo losttask delatttask delatttaskinfo attetask \
alltask bmdm_org bmdm_org2 sendstand attetaskinfo"
#要修改taskid的表
taskidTable="deltask delaudinfo fileindex quittask quitaudinfo"


#检查一线通必须的10张表是否存在
examTableCount()
{
tabnamesFile="tabname.$$"
sql_tabnames="unload to $tabnamesFile select tabname from systables \
where tabname in ('losstaskinfo','losttask','delatttask','delatttaskinfo',\
'attetask', 'alltask','bmdm_org','bmdm_org2','sendstand','attetaskinfo');"

echo $sql_tabnames | dbaccess $REMOTEDB 2>> tmp.$$;

if [ ! -f $tabnamesFile ];then
echo "<ERROR>数据文件[$tabnamesFile]不存在!"
exit 1;
fi

lineCount="`cat $tabnamesFile | wc -l`"
lineCount=`expr 10 - $lineCount`
if [ $lineCount -eq 0 ];then
echo "<OK>必须的10张表存在!"
return 0;
else
_creatTable="$creatTable"
while read tablename
do
   _creatTable="`echo $_creatTable | sed 's/$tablename//g'`"
done < $tabnamesFile
echo "<ERROR>还有[$lineCount]张表不存在:[$_creatTable]"
return 1
fi
}

#检查taskid是否已修改为char(15)
examTaskid()
{
tmpTname=`echo $taskidTable | sed "s/ /','/g" | sed "s/^/'/g" | sed "s/$/'/g"`
taskidFile="taskid.$$"
sql_taskid="unload to $taskidFile select t2.tabname,t1.coltype,t1.collength \
from syscolumns t1,systables t2\
where t1.tabid in (select tabid from systables where tabname in\
($tmpTname)) and colname='taskid' and t1.tabid=t2.tabid;"

echo "$sql_taskid" | dbaccess $REMOTEDB 2>> tmp.$$
if [ ! -f $taskidFile ];then
   echo "<ERROR>数据文件[$taskidFile]不存在!"
   exit 1;
fi

for tablename in $taskidTable
do
   tableDate="`grep $tablename $taskidFile`"
   if [ "$tableDate" = "" ];then
    echo "<ERROR>找不到数据[$tablename]"
    continue;
   fi

   tabname=`echo $tableDate | awk -F"\|" '{print $1}'`
   coltype=`echo $tableDate | awk -F"\|" '{print $2}'`
   collength=`echo $tableDate | awk -F"\|" '{print $3}'`

   if [ "$tabname" != "$tablename" ];then
    echo "<ERROR>表名查找错误[$tablename][$tabname]"
    continue
   fi

   if [ "$coltype" != "0" ];then
    echo "<ERROR>表[$tabname] taskid类型定义不正确[$coltype],应为char [0]"
    continue
   fi

   if [ "$collength" != "15" ];then
    echo "<ERROR>表[$tabname] taskid长度定义不正确[$collength],应为char(15)"
    continue
   fi
done
echo "检查taskid属性完成!"
}

#检查bmdm_org
#发现长春没有这个表,其它要增加字段uporgid
examBmdm()
{
bmdmFile="bmdm_org.$$"
sql_bmdm="unload to $bmdmFile select colname from syscolumns where tabid in\
(select tabid from systables where tabname='bmdm_org') and colname='uporgid'"

echo $sql_bmdm | dbaccess $REMOTEDB 2>>tmp.$$

if [ ! -f $bmdmFile ];then
   echo "<ERROR>数据文件[$bmdmFile]不存在!"
   exit 1;
fi

colname2=`cat $bmdmFile | awk -F"\|" '{print $1}'`
if [ "$colname2" != "uporgid" ];then
   echo "<ERROR>表[bmdm_org]字段[uporgid][$colname2]不存在,或表不存在!"
   return 1
fi
echo "<OK>表bmdm_org检测无误!"
return 0;
}

#检查一线通环境变量有没有设置
examYxtEnv()
{
if [ "$YXTENV" = "Y" ] || [ "$YXTENV" = "y" ];then
   echo "<OK>环境变量已设置"
   return 0;
else
   echo "<ERROR>请设置环境变量[YXTENV=Y]"
   return 1
fi
}

#检查C80400和X8000000服务有没有启动
examYxtServ()
{
strC80400="`ps -ef 2>>tmp.$$ | grep C80400 | grep -v grep`"
strX8000000="`ps -ef 2>>tmp.$$ | grep X8000000 | grep -v grep`"
if [ "$strC80400" = "" ];then
   echo "<ERROR> [C80400]服务没有启动!"
   return 1
fi
if [ "$strX8000000" = "" ];then
   echo "<ERROR> [X8000000]服务没有启动!"
   return 1
fi
echo "<OK>[C80400][X8000000]服务均已启动"
return 0
}

clear
echo "\n====检查一线通必须的10张表是否已新建===="
examTableCount;
echo "\n====检查系统环境变量是否设置===="
examYxtEnv;
echo "\n====检查一线通相关表的taskid字段属性有没有修改==="
examTaskid;
echo "\n====检查bmdm_org表有没有增加字段uporgid==="
examBmdm;
echo "\n===检查C80400和X8000000服务有没有启动==="
examYxtServ;


类别:Shell | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu