好久没写shell基本语法都忘了很多。
今天写了个自动判断程序是否安装,如果安装的话就先卸载,然后保存配置文件,在安装。
如果没安装的话就执行全新安装。
功能很简单,脚本也很简单。
#!/bin/bash
BASEP=$(cd `dirname $0`; pwd)
isCodeMeterPass(){
count=`cmu -lx | grep -A 2 "* PC=9008" | grep "License Quantity" | awk -F ',' '{print $1}' |awk '{print $3}'`
datelic=`cmu -lx | grep -A 2 "* PC=9008" | grep 'Expiration Date:' | awk '{print $3" "$4}'`
dateutc=`timedatectl | grep 'Universal time:' | awk '{print $4" "$5}'`
if [ -z "$count" ] && [ -z "$datelic" ];then
#不存在加密狗
return 1
fi
datelic=`date -d "$datelic" +%s`
dateutc=`date -d "$dateutc" +%s`
if [ "$datelic" -lt "$dateutc" -o $count -lt 1 ];then
#过期或次数不足
return 1
else
#正常
return 0
fi
}
uninstall(){
#删除AxP
echo "正在删除""`rpm -qa|grep AxP`"
rpm -e `rpm -qa|grep AxP`
echo "删除Axp完成"
if [ -f /etc/wibu/CodeMeter/Server.ini ];then
echo "正在备份配置文件"
cp -rf /etc/wibu/CodeMeter/Server.ini /home/Server.ini
else
echo "目录下没有Sever.ini文件"
fi
echo "正在删除""`rpm -qa|grep CodeMeter`"
rpm -e `rpm -qa|grep CodeMeter`
echo "删除codemeter驱动完成"
rm -rf /etc/wibu/
echo "删除codemeter的目录/etc/wibu"
rm -rf /usr/share/CodeMeter
echo "删除目录/usr/share/CodeMeter"
}
number=`rpm -qa|grep CodeMeter|wc -l`
if [ $number -eq 1 ];then
echo "已安装了加密狗驱动,正在卸载重装"
uninstall
rpm -ivh $BASEP/package/*.rpm --nodeps --force
if [ -f /home/Server.ini ];then
service codemeter stop
cp -rf /home/Server.ini /etc/wibu/CodeMeter/Server.ini
service codemeter start
fi
else
echo "未安装加密狗驱动,正在全新安装"
rpm -ivh $BASEP/package/*.rpm --nodeps --force
fi
isCodeMeterPass
ispass=$?
if [ "$ispass" == 1 ];then
#监控WEB服务时,先执行此处,如果过期或加密狗不存在,监控程序将杀掉所有WEB服务
exit 10
else
isrun=`ps -ef | grep -v grep | grep /usr/sbin/CodeMeterLin`
if [ -z "$isrun" ];then
/etc/init.d/codemeter start
fi
fi