提前操作
1、建立文件夹
mkdir install_rpm2、安装
yum install sshpass3、建立主机文件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 "🎉 所有主机处理完毕!"
评论