#!/bin/bash while [ $# -gt 0 ]; do case "$1" in --username=*) username="${1#*=}" ;; *) echo "Invalid argument: $1" exit 1 ;; esac shift done # 目标机器列表,JAVA我都跑过了,ip故意改错了,免得有人错误运行 targets=( "X10.10.241.203" "X10.10.241.204" "X10.10.241.205" "X10.10.241.206" "X10.10.241.207" "X10.10.241.209" "X10.10.241.211" "X10.10.241.212" "X10.10.241.213" "X10.10.241.214" "X10.10.241.215" "X10.10.241.217" "X10.10.241.218" "X10.10.241.220" "X10.10.241.221" "X10.10.241.222" ) #这里展示的离线安装,如果在线安装,只需要step 2的执行命令 # 本地文件路径 local_file="jdk.tar.gz" # 解压后的实际目录名称 fact_name="jdk1.8.0_271" # 所有机器建好了临时目录/home/sptcc/temp/ 和 安装目录/opt/module # 远程临时目录 remote_temp_path="/home/sptcc/temp/" # 远程安装目录 remote_module_path="/opt/module/" remote_install_path="java" # 远程安装包的位置 remote_file="${remote_temp_path}${local_file}" # 安装后的环境变量(如果配置错误了,记得把/etc/environment中错误内容删除,避免影响) # 如果软件相同,但不同机器环境变量有区别,可IF条件动态处理 remote_env_path="${remote_module_path}${remote_install_path}/${fact_name}" # Set default values for missing parameters if [ -z "$username" ]; then username="root" fi # step 1.拷贝命令 scp_command="$local_file $username@$target:$remote_temp_path" # step 2.执行命令 command=$(cat <> /etc/environment && \ sudo echo "PATH=\"$remote_env_path/bin:$PATH\"" >> /etc/environment && \ source /etc/environment && \ java -version EOF ) # 循环遍历目标机器列表 for target in "${targets[@]}" do echo "Copying $jdk_file to $target..." # 拷贝JDK文件到目标机器并安装 echo "step 1.scp_command >> $scp_command" echo "step 2.command >> $command" scp $scp_command && \ ssh $username@$target "$command" echo "installed on $target" done echo "installation completed on all machines"