#!/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;