提前操作

1、建立文件夹

  mkdir install_rpm

2、安装

 yum install sshpass

3、建立主机文件hosts.txt

 cat hosts.txt 
 172.18.211.142
 172.18.211.140
 172.18.211.141

编写脚本

1、免密码配置

 [root@lanjing-zhongkong install_chrome]# cat ssh_key.sh 
 #!/bin/bash
 ​
 HOSTS_FILE="hosts.txt"
 USER="root"
 PASSWORD="*******"  # 请替换为真实密码!
 ​
 # 检查是否有密钥
 if [ ! -f "$HOME/.ssh/id_rsa.pub" ]; then
   echo "🔐 生成本地 SSH 密钥..."
   ssh-keygen -t rsa -b 2048 -N "" -f "$HOME/.ssh/id_rsa"
 fi
 ​
 echo "🚀 开始使用密码批量分发 SSH 公钥..."
 ​
 while IFS= read -r HOST || [ -n "$HOST" ]; do
   [ -z "$HOST" ] && continue
   echo "👉 正在处理 $HOST"
 ​
   sshpass -p "$PASSWORD" ssh-copy-id -o StrictHostKeyChecking=no "$USER@$HOST"
 ​
   if [ $? -eq 0 ]; then
     echo "✅ $HOST 配置成功"
   else
     echo "❌ $HOST 配置失败"
   fi
 ​
   echo "-----------------------------"
 done < "$HOSTS_FILE"
 ​
 echo "🎉 所有主机处理完毕!你现在可以免密登录这些主机了。"

2、上传及安装脚本

  cat install_chrome.sh
 #!/bin/bash
 ​
 RPM_FILE="google-chrome-stable_current_x86_64.rpm"
 REMOTE_PATH="/tmp/$RPM_FILE"
 HOSTS_FILE="hosts.txt"
 USER="root"
 SSH_OPTIONS="-o BatchMode=yes -o StrictHostKeyChecking=no -o ConnectTimeout=5"
 LOG_FILE="install_result.log"
 ​
 # 初始化日志文件
 echo "主机,状态,版本" > "$LOG_FILE"
 ​
 if [ ! -f "$RPM_FILE" ]; then
   echo "❌ 未找到 $RPM_FILE,请确认该文件在当前目录。"
   exit 1
 fi
 ​
 echo "📋 主机列表如下:"
 cat "$HOSTS_FILE"
 echo "-----------------------------"
 ​
 # 打开 HOSTS_FILE 为文件描述符3,避免 read 被 ssh 吃掉
 exec 3< "$HOSTS_FILE"
 ​
 while read -r HOST <&3; do
   [ -z "$HOST" ] && continue
   echo "🚀 正在处理 $HOST ..."
 ​
   if ! ping -c 1 -W 1 "$HOST" &> /dev/null; then
     echo "⚠️ $HOST 不可达,跳过"
     echo "$HOST,不可达," >> "$LOG_FILE"
     continue
   fi
 ​
   if ! scp $SSH_OPTIONS "$RPM_FILE" "$USER@$HOST:$REMOTE_PATH"; then
     echo "⚠️ $HOST 拷贝失败,跳过"
     echo "$HOST,拷贝失败," >> "$LOG_FILE"
     continue
   fi
 ​
   ssh $SSH_OPTIONS "$USER@$HOST" "sudo yum install -y $REMOTE_PATH || true"
   ssh $SSH_OPTIONS "$USER@$HOST" "rm -f $REMOTE_PATH"
 ​
   if ssh $SSH_OPTIONS "$USER@$HOST" "rpm -q google-chrome-stable &>/dev/null"; then
     VERSION=$(ssh $SSH_OPTIONS "$USER@$HOST" "rpm -q --qf '%{VERSION}-%{RELEASE}' google-chrome-stable")
     echo "✅ $HOST 安装成功,版本为:$VERSION"
     echo "$HOST,安装成功,$VERSION" >> "$LOG_FILE"
   else
     echo "❌ $HOST 安装失败或未安装"
     echo "$HOST,安装失败," >> "$LOG_FILE"
   fi
 ​
   echo "-----------------------------"
 done
 ​
 # 关闭文件描述符
 exec 3<&-
 ​
 echo "📄 安装日志记录于:$LOG_FILE"
 echo "🎉 所有主机处理完毕!"