#!/bin/sh
#
# 完全卸载RSAU
#
######################################################################
#
# FUNCTION :Print log to log file genex_install.log
# PARAMETER:1:string
# OUT :
######################################################################
log()
{
printf "\n###LINENUM:%5s###" "${gLINENUM}" >> ${LOGFILE}
printf " $1\n" >> ${LOGFILE}
[ "$2" = "p" ] && { printf "%s\n" "$1"; }
}
#####################################################################
#
# FUNCTION : chkUser
# PARAMETER: 检查当前用户是否是root
####################################################################
chkUser()
{
# check if it's root
curUser=`/usr/bin/whoami | /usr/bin/awk '{print $1}'`
if [ "root" != ${curUser} ]
then
printf "\033[1mPlease use root to install.\033[0m\n"
exit
fi
}
function Judgement_dir()
{
if [ ! -d "/opt/RSAU" ]
then
printf "Not insatll RS!\n\r"
exit
fi
}
######################################################################
#
# FUNCTION :encrypt arithmetic(jiamisuanfa)凯撒加密(位移)算法
# PARAMETER:密码字符集(如变量All)
# INPUT :加密:Caesar "$All" 2 -e $variablesystem
# OUT :解密 Caesar "$All" 2 -d `Caesar "$All" 2 -e $variablesystem`
######################################################################
Caesar()
{
rawdata="$1"
offset="$2"
action="$3"
text="$4"
length=$(echo "$rawdata"|awk '{print length()}')
for((i=1;i<=$length;i++))
do
[ $i -eq 1 ] && y=""
x=$((i+offset))
[ $x -gt $length ] && y="$y$(echo $rawdata|cut -b $((x-length)))" || y="$y$(echo -n $rawdata|cut -b $x)"
done
[ "$action" = "-e" ]&&echo "$text"|tr "$rawdata" "$y"
[ "$action" = "-d" ]&&echo "$text"|tr "$y" "$rawdata"
}
######################################################################
#
# FUNCTION : uncron
# DESCRIPTION: 删除系统定时任务
######################################################################
function uncron()
{
crontab -u omcuser -l >>/tmp/cron.log 2>&1
tartget=`cat /tmp/cron.log|grep "no crontab for"`
if [ "_" == _"$tartget" ]
then
#删除omcuser可能已存在的任务
crontab -u omcuser -r
printf "uncron ok!\n\r"
else
#列出omcuser用户的定时任务
printf "task status:"
crontab -u omcuser -l
fi
rm -rf /tmp/cron.log 2>&1
sleep 2s
}
######################################################################
#
# FUNCTION : un_openAssignment
# DESCRIPTION: 删除操作系统计划任务开关
######################################################################
function un_openAssignment()
{
/etc/init.d/cron stop >>/tmp/stop_cron.log 2>&1
stop_cron=`cat /tmp/stop_cron.log|grep "Shutting down CRON daemon..done"`
if [ "_" != _"stop_cron" ]
then
printf "un_openAssignment ok!\n\r"
sleep 2s
else
printf "exception openAssignment!\n\r"
sleep 2s
fi
rm -rf /tmp/stop_cron.log 2>&1
}
######################################################################
# 删除目录链接
# FUNCTION :delete directory connection
# PARAMETER:nothing
# OUT :noting
######################################################################
function del_link()
{
rm -rf /tmp/dir_link.log 2>&1
unlink /opt/RSAU >/tmp/dir_link.log 2>&1
check_dir_link=`cat /tmp/dir_link.log|grep "cannot unlink"`
if [ "_" == _"$check_dir_link" ]
then
printf "delete directory link ok!\n\r"
sleep 2s
else
printf "unlink:cannot unlink opt/RSAU\n\r"
sleep 2s
fi
}
######################################################################
#
# FUNCTION : dropDatabase
# PARAMETER: 实现改为删除数据库中的表,视图,索引,sequence、存储过程、同义词等即可;或者什么也不做
######################################################################
function delete_job_tex()
{
rm -rf $del_job >/dev/null 2>&1
echo "begin" >>$del_job
echo "sys.dbms_scheduler.drop_job(job_name => '"GENEX"."J_CREATE_TABLE"');" >>$del_job
echo "sys.dbms_scheduler.drop_job(job_name => '"GENEX"."J_DELETE_CHR"');" >>$del_job
echo "commit;" >>$del_job
echo "end;" >>$del_job
echo "/" >>$del_job
chmod 777 $del_job
}
function drop_db_all_information ()
{
#DBuser=`cat /tmp/user_genex_password.log|cut -d : -f 1`
#DBANpassword=`cat /tmp/user_genex_password.log|cut -d : -f 2`
chmod -R 777 /tmp
DBuser=`cut -d : -f 1 /tmp/user_genex_password.log`
DBANpassword=`cut -d : -f 2 /tmp/user_genex_password.log`
DBMINGpassword=`Caesar "$All" 2 -d $DBANpassword` 2>&1
#sqlplus登入数据库
printf "delete tables,delete views,delete sequence,delete functions,delete procedure,drop package waiting...\n\r"
echo ""
su - $DBUSER -c "sqlplus $db_user/$DBMINGpassword <<EOF
SET HEAD OFF
SPOOL /tmp/drop_tables.sql
SET HEAD OFF
--delete tables
select 'drop table ' || table_name ||';'||chr(13)||chr(10) from user_tables;
--delete views
select 'drop view ' || view_name||';'||chr(13)||chr(10) from user_views;
--delete seqs
select 'drop sequence ' || sequence_name||';'||chr(13)||chr(10) from user_sequences;
--delete functions
select 'drop function ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='FUNCTION';
--delete procedure
select 'drop procedure ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='PROCEDURE';
--delete package
select 'drop package ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='PACKAGE';
--delete trigger
SELECT 'drop TRIGGER "' ||SYS_CONTEXT('USERENV','CURRENT_USER')||'"."'|| TRIGGER_NAME ||'";' ||CHR(13) ||CHR(10)FROM USER_TRIGGERS;
spool off;
@/tmp/drop_tables.sql;
@/tmp/del_job.sql;
--清空Oracle的回收站
purge recyclebin;
disc;
quit;
EOF" >>/tmp/user_genex_drop.log 2>&1
sleep 6s
LaterDatabase
echo ""
}
function LaterDatabase()
{
su - $DBUSER -c "sqlplus / as sysdba <<EOF
--startup安装初始化时会开启数据库
--shutdown immediate;
shutdown abort;
disc;
quit;
EOF" >>/tmp/user_genex_drop.log 2>&1
sed -i '/${DBNAME}:\${ORACLE_HOME}:Y/d' /etc/oratab
sleep 3s
printf "delete tables,delete views,delete sequence,delete functions,delete procedure,delete package ok!\n\r"
}
######################################################################
############################main######################################
######################################################################
#密码加密字符集
All="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 !@#$%^&*()_+-="
del_job=/tmp/del_job.sql
db_user=genex
PRODUCT="RSAU"
LOGFILE="uninstall.log"
#保存日志产生的脚本代码行数的全局变量,在输出日志时会将该函数写在日志信息行首,所以每次调用日志函数之前,请务必先设置该全局变量
gLINENUM=0
#数据库用户名默认为genex,因为oracle安装需要在非root用户下安装
#,所以安装oracle之前先创建好oracle用户,使用oracle用户进行oracle的卸载
DBUSER=oracle
ORACLE_HOME="/opt/oracle/oradb/home"
DBNAME=chrdb
targetDir="/opt/RSAU"
Judgement_dir
chkUser
delete_job_tex
drop_db_all_information
uncron
un_openAssignment
del_link
rm -rf $targetDir >/dev/null 2>&1
rm -rf /export/home/RSAU
printf "delete files ok!\n\r"
sleep 2s
stty -echo
echo ""
printf "$PRODUCT uninstall \033[40;32msuccessful .\033[0m.\n"
echo "Press any key to quit."
read -n 1
stty echo
echo ""