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