unistall

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值