1. 程式人生 > >linux 指令碼實現程式自動安裝

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