zoukankan      html  css  js  c++  java
  • linux 脚本实现程序自动安装

    #!/bin/bash
     
    //设置脚本中所需命令的执行路径
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH
     
    // $? 是取得上面执行命令的返回值,一般正确为0,错误为1
    if [ "$?" != 0 ] ;
    then
     //echo 为输出到屏幕
     echo "Please check your need software"
     //exit 0 为强制终止脚本
     exit 0
    fi
     
     
    // 声明回滚函数(作用是删除解压出来的文件)
    rollback(){
       rm -rf apache-tomcat.tar.gz
       rm -rf MySQL-client-5.5.31-2.rhel5.i386.rpm
       rm -rf MySQL-server-5.5.31-2.rhel5.i386.rpm
       rm -rf jdk-6u29-linux-i586-rpm.bin
       rm -rf mysql.cnf
    }
     
    echo "Please choose to install or uninstall? (Installation: 1 / Uninstall: 0)"
     
    //接收键盘输入,并把输入的值存放在userinput变量中
    read userinput
     
    //判断变量的值
    if [ "$userinput" == '1' ] ;
    then
     
    //判断文件是否存在 
    if [ ! -e medical.tar.gz ] ;
    then
      echo "I cann't find medical.tar.gz file."
      exit 0
    else
    //存在则赋权并解压
    chmod 755 medical.tar.gz
    tar zxvf medical.tar.gz
    fi
     
    ################################### Verify #################################
     
    //判断本机是否安装了jdk
    rpm -qa | grep jdk
    if [ "$?" == 0 ] ;
    then 
    echo "Already installed JDK, please uninstall!"
    rollback;
    exit 0
    fi 
     
    //判断8080端口是否被占用
    netstat -apn | grep 8080
    if [ "$?" == 0 ] ;
    then
    echo "8080 port is occupied!"
    rollback;
    exit 0
    fi
     
    //判断本机是否安装了mysql
    rpm -qa | grep -i mysql
    if [ "$?" == 0 ] ;
    then
    echo "The system has been installed MySQL.Please run the uninstall!"
    rollback;
    exit 0
    fi
     
    //判断目录是否已存在
    if [ -d /usr/tomcat-medical ] ; 

      then 

    echo "/usr/tomcat-medical Directory exists"  
    rollback; 
    exit 0 
    fi
     
    //判断3306端口是否被占用
    netstat -apn | grep 3306
    if [ "$?" == 0 ] ;
    then
    echo "3306 port is occupied" 
    rollback;
    exit 0
    fi
     
    ##################################### JDK ################################
     
    //赋权并安装jdk 

      chmod 755 jdk-6u29-linux-i586-rpm.bin 

    ./jdk-6u29-linux-i586-rpm.bin
    //安装jdk的时候需要回车确认一下jdk的许可协议
     
    #########################################################################
     
    //rpm包的jdk安装完成会自动生成 java/jdk**** 的文件夹,判断是否生成了jdk文件夹
    if [ ! -d java/jdk1.6* ] ;
    then
    echo "I cann't find JDK directory."
    rollback;
    exit 0
    fi
     
    ############################## Environment Variables #########################
     
    //将一段文本追加到指定文件尾部(写入环境变量)
    cat >> /etc/profile << EFF
     
    JAVA_HOME=/usr/java/jdk1.6.0_29
    JRE_HOME=$JAVA_HOME/jre
    CLASSPATH=:$JAVA_HOME/lib:$JRE_HOME/lib
    PATH=$JAVA_HOME:/bin:$JRE_HOME/bin:$PATH
    export JAVA_HOME JRE_HOME CLASSPATH PATH
     
    EFF
     //使环境变量立即生效
     source /etc/profile
     
    #########################################################################
     
    //判断环境变量是否已经生效
    java -version
    if [ "$?" != 0 ] ;
    then
    echo "I cann't set java path."
    rollback;
    exit 0
    fi
     
    ####################### Delete JDK Installation file #############################
     
    rm -rf jdk-6u29-linux-i586.rpm
    rm -rf sun-javadb*
     
    ################################# MySQL ##################################
     
    //赋权并安装mysql
    chmod 755 MySQL-server-5.5.31-2.rhel5.i386.rpm
    rpm -ivh MySQL-server-5.5.31-2.rhel5.i386.rpm
     
    ################### Copy MySQL configuration file ##############################
     
     //将一份已经准备好的配置文件替换mysql现有配置文件
     chmod 755 mysql.cnf
     cp mysql.cnf /usr/share/mysql/my-medium.cnf
     cp mysql.cnf /etc/my.cnf
     
     //启动或重启mysql
     netstat -apn | grep 3306
     if [ "$?" != 0 ] ;
     then
      service mysql start
     else
      service mysql restart
     fi
     
     //判断mysql是否启动成功
     netstat -apn | grep 3306
     if [ "$?" != 0 ] ;
     then
      echo "MySQL service failed to start!"
      rollback;
      exit 0
     fi
     
     //安装mysql用户端
     chmod 755 MySQL-client-5.5.31-2.rhel5.i386.rpm
     rpm -ivh MySQL-client-5.5.31-2.rhel5.i386.rpm
     
    ################################ Tomcat ##################################
     
     
     //赋权并解压tomcat
     chmod 755 apache-tomcat*.tar*
     tar zxvf apache-tomcat*.tar*
     mv apache-tomcat-6.0.32/ /usr/tomcat-medical/
           
    ################################ Medical ##################################
     
     //赋权并解压应用到tomcat/webapps目录下
     chmod 755 medical.zip
     unzip medical.zip -d /usr/tomcat-medical/webapps/
     
     //判断当前目录下是否存在Install.zdt文件,存在则copy文件到指定目录下
     if [ -e Install.zdt ] ;
     then
       cp Install.zdt /usr/tomcat-medical/webapps/medical/WEB-INF/data/installer/
     fi
     
    ########################### Change Password ################################
     
     //等待5秒
     sleep 5
     //mysql默认密码为空,修改mysql密码(需要当前用户有mysql执行权限)
     mysqladmin flush-privileges password '******'
     
    ########################## Environment Variables #############################
     
    //环境变量

      cat >> /etc/profile << TTD 

      TOMCAT_HOME=/usr/tomcat-medical/ 

      PATH=$PATH:$TOMCAT_HOME/bin/:/usr/local/apache2/bin: 

      export JAVA_HOME JRE_HOME CLASSPATH PATH TOMCAT_HOME 

      TTD 

     
    source /etc/profile
     
    #########################################################################
     
     //启动tomcat
     sh /usr/tomcat-medical/bin/startup.sh
     
     //这里延迟5秒等待tomcat启动完成
     sleep 5
     
     //判断tomcat状态
     curl 127.0.0.1:8080 | grep "Thanks for using Tomcat"
     if [ "$?" != 0 ] ;
     then
      echo "I think install tomcat is unfinished ."
      rollback;
      exit 0
     fi
     
     rollback;
     
    ######################## Auto Start Up Services ###############################
     
    //把tomcat启动脚本加入rc.local文件中实现开机自动启动
    cat >> /etc/rc.local << ASU
     
    /usr/tomcat-medical/bin/startup.sh
     
    ASU
     
     //设置mysql服务开机自动启动
     chkconfig --add mysql
     
    ########################################################################
     
    //如果用户输入0的情况下执行卸载程序
    elif [ "$userinput" == '0' ] ;
    then
     
     echo "Uninstalling Tomcat......"
     
     netstat -apn | grep 8080
     if [ "$?" == 0 ] ;
     then
      sh /usr/tomcat-medical/bin/shutdown.sh
     fi
     
     rm -rf /usr/tomcat-medical/
     
     echo "Uninstalling JDK......"
     rpm -e jdk-1.6.0_29-fcs.i586
     
     echo "Uninstalling MySQL......"
     
     netstat -apn | grep 3306
     if [ "$?" == 0 ] ;
     then
      service mysql stop
     fi
     
     rpm -e MySQL-client-5.5.31-2.rhel5.i386
     rpm -e MySQL-server-5.5.31-2.rhel5.i386
     
     echo "Uninstall is complete please modify environment variables."
     
    //如果用户输入的不是1或0则执行这里
    else
     echo "You can only enter 1 or 0."
     
    fi 
  • 相关阅读:
    牛客练习赛44 A 小y的序列 (模拟,细节)
    牛客假日团队赛10 L 乘积最大 (dp,大数)
    三分查找
    几何基础知识点
    POJ 2318 TOYS
    UVA 11916 Emoogle Grid(大步小步算法(解模方程对数) 快速幂 模的逆)
    UVA 11426 GCD
    Aladdin and the Flying Carpet(算术基本定理)
    算术基本定理
    数论总结帖
  • 原文地址:https://www.cnblogs.com/aaron-leb/p/5705548.html
Copyright © 2011-2022 走看看