A:本脚本运行的机器,Linux
B:待安装JDK的机器, Linux

首先在脚本运行的机器A上确定可以ssh无密码登录到待安装jdk的机器B上,然后就可以在A上运行本脚本:

代码如下:
$ ./install_jdk.sh B的IP 

or:

$ ./install_jdk.sh "B的IP" "JDK的URI"

就可以在机器B上安装JDK。jdk使用的tar包需要用户自己设定DEFAULT_JDK_SRC=?,保证可以wget得到即可。下面是全部脚本内容:
#!/bin/bash 

# @file 
#   install_jdk.sh 

# @date 
#   2015-11-24

# @author 
#   Nyan 

# @version 
#   0.0.1pre 

# @usage: 
#   ./install_jdk.sh 192.168.15.32

################################################################################ 
. common.sh 
 
#*********************************************************** 
# install_jdk 
#   install jdk on machine: /usr/local/jdk

# Parameters: 
#   machine - root@ipaddr 
#   jdkUri  - uri for fetching tarball 

# Example: 

#   install_jdk root@192.168.15.32 ftp://vm-ftp/pub/tarball/jdk-7u67-linux-x64.tar.gz 

#*********************************************************** 
. common.sh 
 
# YOU MIGHT CHANGE BELOW LINE TO GET YOUR JDK TARBALL: 
DEFAULT_JDK_SRC="ftp://vm-ftp/pub/tarball/jdk-7u67-linux-x64.tar.gz" 
 
# DO NOT CHANGE BELOW TWO LINES: 
INSTALL_DIR="/usr/local/lib/java" 
LOCAL_DIR="./.tmp" 
 
function install_jdk() { 
    echo -e "<INFO> install jdk on machine: $1" 
 
    local DEST_LOGIN=$1 
    local JDK_URI=$2 
    local TAR=$(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") 
    local ret=$? 
 
    case $ret in 
    $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 
 
    # untar to jdk_untar 
    tar -zxf $LOCAL_DIR/$TAR -C $LOCAL_DIR/jdk_untar 
 
    $(is_empty_dir "$LOCAL_DIR/jdk_untar") 
    local ret=$? 
 
    if [ "$ret" -eq "$DIR_NOT_EMPTY" ]; then 
        local jdk_home=`ls $LOCAL_DIR/jdk_untar 2>/dev/null` 
        echo $jdk_home 
    else 
        exit $ERR_FATAL_ERROR 
    fi 
 
    echo -e "<INFO> create folder on: $DEST_LOGIN:$INSTALL_DIR" 
    local ret=`ssh $DEST_LOGIN "mkdir $INSTALL_DIR"` 
 
    echo -e "<INFO> copy $jdk_home/ to: $DEST_LOGIN:$INSTALL_DIR/" 
    local ret=`scp -r $LOCAL_DIR/jdk_untar/$jdk_home $DEST_LOGIN:$INSTALL_DIR` 
 
    # remove local tar 
    rm -rf $LOCAL_DIR/jdk_untar 
 
    local DEST_JAVA_HOME=$INSTALL_DIR/$jdk_home 
 
    echo -e "<TODO> remove old settings for install_jdk in /etc/profile" 
 
    echo -e "<INFO> set /etc/profile: JAVA_HOME=$DEST_JAVA_HOME" 
    local ret=`ssh $DEST_LOGIN "echo '' >> /etc/profile"` 
    local ret=`ssh $DEST_LOGIN "echo '#!{{install_jdk@hgdb.net==>' >> /etc/profile"` 
 
    local ret=`ssh $DEST_LOGIN "echo 'export JAVA_HOME=$DEST_JAVA_HOME' >> /etc/profile"` 
    local ret=`ssh $DEST_LOGIN "echo 'export
CLASSPATH=.:\\$JAVA_HOME/lib/tools.jar:\\$JAVA_HOME/lib/dt.jar' >>
/etc/profile"` 
    local ret=`ssh $DEST_LOGIN "echo 'export PATH=\\$JAVA_HOME/bin:\\$JAVA_HOME/jre/bin:\\$PATH' >> /etc/profile"` 
 
    local ret=`ssh $DEST_LOGIN "echo '#!<==install_jdk@hgdb.net}}'>> /etc/profile"` 
 
    local ret=`ssh $DEST_LOGIN ". /etc/profile"` 

 
 
function uninstall_jdk() { 
    echo -e "<TODO> uninstall jdk from: $1" 

 
#======================================================================= 
# ---- main() ---- 
if [ -n $1 ]; then 
    DEST_IP=$1 
    JDK_SRC=$DEFAULT_JDK_SRC 
 
    if [ $# == 2 ]; then 
        JDK_SRC=$2 
    fi 
 
    echo -e "<INFO> install jdk on '$DEST_IP', jdk: '$JDK_SRC'" 
 
    install_jdk "root@$DEST_IP" "$JDK_SRC" 
fi

JDK自动安装脚本的更多相关文章

  1. ubuntu(Eclipse+JDK) 自动安装脚本

    sudo rm -rf jdk1.8.0_40sudo rm -rf /usr/lib/jvm sudo tar -zxvf jdk-8u40-linux-i586.tar.gzsudo mkdir ...

  2. mysql 自动备份和nginx自动安装脚本

    一.自动备份Mysql脚本: 如下脚本为mysql自动备份脚本,仅供参考,可以根据实际情况修改. #!/bin/sh #auto backup mysql #wugk #Define PATH定义变量 ...

  3. Windows ftp脚本和RSCD agent自动安装脚本

    Windows ftp脚本 和bladelogic RSCD Agent自动安装脚本 比较简单的命令是msiexec /I "C:\RSCD85-SP1-WIN64.msi" /Q ...

  4. python第三方库自动安装脚本

    #python第三方库自动安装脚本,需要在cmd中运行此脚本#BatchInstall.pyimport oslibs = {"numpy","matplotlib&qu ...

  5. LAMP自动安装脚本

    #!/bin/bash # 功能描述:LAMP自动安装脚本 # 初始化 if [ "$(cat /etc/system-release | awk '{print $(NF-1)}' | a ...

  6. python3自动安装脚本,python3.x与python2.x共存

    1.前言: python3过程中,通过搜索一些文章参考安装过程发现比较麻烦,而且还出现一些不可预期的报错.python3环境需要升级openssl,所以为了部署到其他环境更方便,写自动安装脚本方式,且 ...

  7. OpenJDK自动安装脚本 InstallOpenJDK.vbs

    Oracle JDK 要收费了,Open JDK没有安装包,只有Zip,写了个安装脚本 InstallOpenJDK.vbs Rem ********************************* ...

  8. hadoop自动安装脚本

    还不能实现完全自动安装,只能算半自动的. 进行交互主要障碍有两点: 1. ssh-keygen的时候需要点击回车. 2. passwd 需要设置密码  如果谁能解决以上两点,欢迎email给我. 另外 ...

  9. Mysql5.7免编译版自动安装脚本

    一:readme: .此脚本仅仅适合于5.7免面编译安装版本. .安装是需自己选择mysql软件安装包:例如mysql--linux-glibc2.-x86_64.-linux-glibc2.-x86 ...

随机推荐

  1. 方阵行列式并行化计算(OpenMP,MPI),并计算加速比

    00][100].在创建方阵时,方阵的阶数N(N<100)由外部输入.然后用两层"for循环"来给方阵 p左上角 N×N个位置赋值.具体实现如下: /* * 定义矩阵阶数N ...

  2. ThinkPHP框架基础知识一

    ThinkPHP是一个快速.兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来 ...

  3. VM and Docker Container

    https://www.zhihu.com/question/48174633 在开始讨论前,先抛出一些问题,可先别急着查看答案,讨论的过程可以让答案更有趣,问题如下: Docker 容器有自己的ke ...

  4. Python编程-架构、Socket

    一.客户端/服务器架构 1.C/S架构 Client/Server架构,即服务器/客户端架构. 客户端和服务器端的程序不同,用户的程序主要在客户端,服务器端主要提供数据管理.数据共享.数据及系统维护和 ...

  5. L1范数与L2范数正则化

    2018-1-26 虽然我们不断追求更好的模型泛化力,但是因为未知数据无法预测,所以又期望模型可以充分利用训练数据,避免欠拟合.这就要求在增加模型复杂度.提高在可观测数据上的性能表现得同时,又需要兼顾 ...

  6. Virtual Container Hosts(VCHs) 介绍

    In vSphere Integrated Containers, you deploy virtual container hosts (VCHs) that serve as Docker API ...

  7. 10个超有趣的linux命令

    本文展示了 10 个有趣的 Linux 动态命令,这些命令和实用功能无关,仅供娱乐!看完此文,你会对 Linux 有个全新的认识,谁说 IT 男就没有屌丝娱乐的一面呢?还等什么,就让我们开始看文章吧~ ...

  8. JSP的动态Include的静态Include

    1. 静态导入示例 先总结: 1:静态include是把被引入的文件拼接到本页面中,再做为一个整体来编译,返回结果给客户端. 动态include是分别编译本页面和被引入的页面,再把结果合成一个html ...

  9. how to use composer in fiddler

    https://www.cnblogs.com/youxin/p/3570310.html http://docs.telerik.com/fiddler/generate-traffic/tasks ...

  10. 【P2774】方格取数问题(贪心+最大流,洛谷)

    首先,我们要读懂这道题,否则你会和我一开始产生一样的疑问,把所有的数都取走剩下一个最小的不就可以了么???然后我们发现样例完全不是这么回事.题目中所说的使相邻的两个数没有公共边,是指你去走的数,也就是 ...