常用脚本

根据操作系统执行对应脚本

针对麒麟、红帽 7 、红帽 8 进行不同的操作

update_libblockdev.sh

#!/bin/bash

# 判断系统类型并执行对应的修复操作

# 定义系统类型变量
OS_TYPE=""

# 检测系统类型
if [ -f /etc/os-release ]; then
    # . /etc/os-release
    # 为了防止有人恶意篡改 /etc/os-release 文件,使用cat和grep来获取ID和VERSION_ID
    ID=$(cat /etc/os-release | grep ^ID= | cut -d= -f2 | tr -d '"')
    VERSION_ID=$(cat /etc/os-release | grep ^VERSION_ID= | cut -d= -f2 | tr -d '"')
    case $ID in
        kylin)
            OS_TYPE="kylin"
            ;;
        rhel)
            if [[ $VERSION_ID =~ 7.* ]]; then
                OS_TYPE="rhel7"
            elif [[ $VERSION_ID =~ 8.* ]]; then
                OS_TYPE="rhel8"
            fi
            ;;
        *)
            echo "Unsupported operating system"
            exit 1
            ;;
    esac
else
    echo "Cannot determine OS type"
    exit 1
fi

# 执行对应的修复操作
case $OS_TYPE in
    kylin)
        echo "Running repair commands for Kylin..."
        # 在此处添加麒麟系统的修复命令
        # 示例: yum update -y libblockdev
        ;;
    rhel7)
        echo "Running repair commands for RHEL 7..."
        # 在此处添加红帽7的修复命令
        # 示例: yum update -y libblockdev
        ;;
    rhel8)
        echo "Running repair commands for RHEL 8..."
        # 在此处添加红帽8的修复命令
        # 示例: dnf update -y libblockdev
        ;;
    *)
        echo "Unsupported OS type: $OS_TYPE"
        exit 1
        ;;
esac

echo "Repair completed successfully."

如果需要批量执行,可以利用 ssh 和 for 循环

# 创建要执行的主机列表文件 hosts.txt
cat <<EOL > hosts.txt
host1
host2
host3
EOL

# 使用 for 循环和 ssh 执行脚本
for host in $(cat hosts.txt); do
    echo "Executing on $host..."
    ssh user@$host 'bash -s' < update_libblockdev.sh
done