跳过正文

Linux下使用IPMI批量管理服务器BMC

Linux Bcm Ipmi
目录

在服务器管理的日常工作中,对多台服务器的 IPMI(Intelligent Platform Management Interface)进行批量管理是一项常见且重要的任务。手动逐台操作不仅效率低下,还容易出错。今天,我就来介绍一个强大的 Shell 脚本,它能帮助你轻松实现 IPMI 的批量管理,大大提升工作效率。

脚本功能概述
#

这个 Shell 脚本支持多种 IPMI 操作,涵盖了服务器的电源管理、启动模式设置、BMC(Baseboard Management Controller)管理等多个方面。具体功能如下:

  • 电源管理:查看电源状态、开机、关机、重启
  • 启动模式设置:PXE 启动、BIOS 启动、从 CD/DVD 启动、从硬盘启动
  • BMC 管理:查看 BMC 用户信息、冷重启 BMC、热重启 BMC
  • 系统管理:冷重启系统
#!/bin/bash
# 定义函数用于执行 IPMI 操作
ipmi_action() {
    local ip=$1
    local username=$2
    local password=$3
    local action=$4
    case $action in
        "power_status")
            ipmitool -I lanplus -H "$ip" -U "$username" -P "$password" chassis power status
            ;;
        "power_on")
            ipmitool -I lanplus -H "$ip" -U "$username" -P "$password" chassis power on
            ;;
        "power_off")
            ipmitool -I lanplus -H "$ip" -U "$username" -P "$password" chassis power off
            ;;
        "power_reset")
            ipmitool -I lanplus -H "$ip" -U "$username" -P "$password" chassis power reset
            ;;
        "pxe_boot")
            ipmitool -I lanplus -H "$ip" -U "$username" -P "$password" chassis bootdev pxe options=persistent
            ;;
        "bios_boot")
            ipmitool -I lanplus -H "$ip" -U "$username" -P "$password" chassis bootdev bios options=persistent
            ;;
        "cdrom_boot")
            ipmitool -I lanplus -H "$ip" -U "$username" -P "$password" chassis bootdev cdrom options=persistent
            ;;
        "disk_boot")
            ipmitool -I lanplus -H "$ip" -U "$username" -P "$password" chassis bootdev disk options=persistent
            ;;
        "bmc_user_info")
            ipmitool -I lanplus -H "$ip" -U "$username" -P "$password" user list
            ;;
        "bmc_cold_reset")
            ipmitool -I lanplus -H "$ip" -U "$username" -P "$password" bmc reset cold
            ;;
        "bmc_warm_reset")
            ipmitool -I lanplus -H "$ip" -U "$username" -P "$password" bmc reset warm
            ;;
        "system_cold_reset")
            ipmitool -I lanplus -H "$ip" -U "$username" -P "$password" chassis power cycle
            ;;
        *)
            echo "不支持的操作: $action"
            return 1
            ;;
    esac
    if [ $? -eq 0 ]; then
        echo "对 $ip 执行 $action 操作成功"
    else
        echo "对 $ip 执行 $action 操作失败"
    fi
}
# 检查命令行参数是否正确
if [ $# -ne 3 ]; then
    echo "用法: $0 <ip_list_file> <username> <password> [power_status|power_on|power_off|power_reset|pxe_boot|bios_boot|cdrom_boot|disk_boot|bmc_user_info|bmc_cold_reset|bmc_warm_reset|system_cold_reset]"
    exit 1
fi
ip_list_file=$1
username=$2
password=$3
action=$4
# 检查 IP 列表文件是否存在
if [ ! -f "$ip_list_file" ]; then
    echo "IP 列表文件 $ip_list_file 不存在"
    exit 1
fi
# 遍历 IP 列表文件并执行操作
while IFS= read -r ip; do
    ipmi_action "$ip" "$username" "$password" "$action"
done < "$ip_list_file"

使用方法
#

  1. 准备 IP 列表文件

创建一个 .txt 文件,例如 ip_list.txt,将服务器的 IP 地址逐行写入该文件。示例如下:

192.168.1.100
192.168.1.101
192.168.1.102
  1. 保存脚本

将上述代码保存为一个文件,例如 ipmi_batch_full.sh

  1. 赋予执行权限

在终端中运行以下命令为脚本赋予执行权限:

chmod +x ipmi_batch_full.sh
  1. 执行脚本

根据需求执行相应的命令,例如查看所有服务器的电源状态:

./ipmi_batch_full.sh ip_list.txt admin password power_status

总结
#

通过这个 Shell 脚本,你可以方便快捷地对多台服务器的 IPMI 进行批量管理。它不仅提高了工作效率,还减少了人为错误的发生。希望这个脚本能帮助你更好地管理服务器,让你的工作更加轻松高效!

相关文章

使用 find 命令高效查找文件
Linux Find
Linux exec指令
Linux Exec
CPU(中央处理器)的概念、结构特点和在系统中的地位
CPU