linux 指令碼實現程式自動安裝
阿新 • • 發佈:2018-12-30
#!/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 ################################
//賦權並安裝jdkchmod 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 ] ; thenservice mysql startelseservice mysql restartfi //判斷mysql是否啟動成功 netstat -apn | grep 3306 if [ "$?" != 0 ] ; thenecho "MySQL service failed to start!"rollback;exit 0fi //安裝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 ] ; thencp 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 ] ; thenecho "I think install tomcat is unfinished ."rollback;exit 0fi 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//如果使用者輸入的不是1或0則執行這裡 elsesh /usr/tomcat-medical/bin/shutdown.shfi 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 ] ; thenservice mysql stopfi 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."
echo "You can only enter 1 or 0."fi