Shell脚本实现在Linux系统中自动安装JDK
A:本脚本运行的机器,Linux
B:待安装JDK的机器,Linux
首先在脚本运行的机器A上确定可以ssh无密码登录到待安装jdk的机器B上,然后就可以在A上运行本脚本:
$./install-jdk.shB的IP
or:
$./install-jdk.sh"B的IP""JDK的URI"
就可以在机器B上安装JDK。jdk使用的tar包需要用户自己设定DEFAULT_JDK_SRC=?,保证可以wget得到即可。下面是全部脚本内容:
#!/bin/bash # #@file # install-jdk.sh # #@date # 2013-12-19 # #@author # cheungmine # #@version # 0.0.1pre # #@usage: # ./install-jdk.sh192.168.122.206 # ################################################################################ .common.sh #*********************************************************** #install_jdk # installjdkonmachine:/usr/local/lib # #Parameters: # machine-root@ipaddr # jdkUri -uriforfetchingtarball # #Example: # # install_jdkroot@192.168.122.206ftp://vm-ftp/pub/tarball/jdk-7u67-linux-x64.tar.gz # #*********************************************************** .common.sh #YOUMIGHTCHANGEBELOWLINETOGETYOURJDKTARBALL: DEFAULT_JDK_SRC="ftp://vm-ftp/pub/tarball/jdk-7u67-linux-x64.tar.gz" #DONOTCHANGEBELOWTWOLINES: INSTALL_DIR="/usr/local/lib/java" LOCAL_DIR="./.tmp" functioninstall_jdk(){ echo-e"<INFO>installjdkonmachine:$1" localDEST_LOGIN=$1 localJDK_URI=$2 localTAR=$(basename$JDK_URI) echo-e"<INFO>jdk:'$JDK_URI'" wget-c$JDK_URI-P$LOCAL_DIR-O$LOCAL_DIR/$TAR $(is_empty_dir"$LOCAL_DIR/jdk_untar") localret=$? case$retin $DIR_NOT_EXISTED) mkdir-p$LOCAL_DIR/jdk_untar ;; $DIR_IS_EMPTY) ;; $DIR_NOT_EMPTY) rm-rf$LOCAL_DIR/jdk_untar/* ;; *) exit$ERR_FATAL_ERROR ;; esac #untartojdk_untar tar-zxf$LOCAL_DIR/$TAR-C$LOCAL_DIR/jdk_untar $(is_empty_dir"$LOCAL_DIR/jdk_untar") localret=$? if["$ret"-eq"$DIR_NOT_EMPTY"];then localjdk_home=`ls$LOCAL_DIR/jdk_untar2>/dev/null` echo$jdk_home else exit$ERR_FATAL_ERROR fi echo-e"<INFO>createfolderon:$DEST_LOGIN:$INSTALL_DIR" localret=`ssh$DEST_LOGIN"mkdir$INSTALL_DIR"` echo-e"<INFO>copy$jdk_home/to:$DEST_LOGIN:$INSTALL_DIR/" localret=`scp-r$LOCAL_DIR/jdk_untar/$jdk_home$DEST_LOGIN:$INSTALL_DIR` #removelocaltar rm-rf$LOCAL_DIR/jdk_untar localDEST_JAVA_HOME=$INSTALL_DIR/$jdk_home echo-e"<TODO>removeoldsettingsforinstall_jdkin/etc/profile" echo-e"<INFO>set/etc/profile:JAVA_HOME=$DEST_JAVA_HOME" localret=`ssh$DEST_LOGIN"echo''>>/etc/profile"` localret=`ssh$DEST_LOGIN"echo'#!{{install_jdk@hgdb.net==>'>>/etc/profile"` localret=`ssh$DEST_LOGIN"echo'exportJAVA_HOME=$DEST_JAVA_HOME'>>/etc/profile"` localret=`ssh$DEST_LOGIN"echo'exportCLASSPATH=.:\\$JAVA_HOME/lib/tools.jar:\\$JAVA_HOME/lib/dt.jar'>>/etc/profile"` localret=`ssh$DEST_LOGIN"echo'exportPATH=\\$JAVA_HOME/bin:\\$JAVA_HOME/jre/bin:\\$PATH'>>/etc/profile"` localret=`ssh$DEST_LOGIN"echo'#!<==install_jdk@hgdb.net}}'>>/etc/profile"` localret=`ssh$DEST_LOGIN"./etc/profile"` } functionuninstall_jdk(){ echo-e"<TODO>uninstalljdkfrom:$1" } #======================================================================= #----main()---- if[-n$1];then DEST_IP=$1 JDK_SRC=$DEFAULT_JDK_SRC if[$#==2];then JDK_SRC=$2 fi echo-e"<INFO>installjdkon'$DEST_IP',jdk:'$JDK_SRC'" install_jdk"root@$DEST_IP""$JDK_SRC" fi