BMC IP 配置脚本:一站式完成配置与验证

ipmitool 配置 BMC 静态 IP、掩码、网关,直接复制对应命令即可(通道默认用 1,绝大多数服务器适用)。

一、查看当前 BMC 配置(确认通道)

配置前建议先查看当前 BMC 网络配置,确认通道号(默认通道1,多数服务器适用):


# 查看通道1的BMC网络配置(最常用)
ipmitool lan print 1

# 查看所有通道(确认你的通道号,一般是1)
ipmitool channel info

二、配置静态 IP(完整流程)

手动分步配置静态 IP,按顺序执行以下命令(通道1为例,需自定义IP、掩码、网关):


# 1. 设为静态IP模式(必须先执行)
ipmitool lan set 1 ipsrc static

# 2. 设置IP地址(替换为你的BMC IP)
ipmitool lan set 1 ipaddr 192.168.0.100

# 3. 设置子网掩码(替换为你的子网掩码)
ipmitool lan set 1 netmask 255.255.255.0

# 4. 设置默认网关(替换为你的网关)
ipmitool lan set 1 defgw ipaddr 192.168.0.1

# 5. 重启BMC生效(关键步骤,配置后必须执行)
ipmitool bmc reset cold

三、配置 DHCP(自动获取 IP)

若无需静态IP,可配置为 DHCP 自动获取,执行以下命令:


ipmitool lan set 1 ipsrc dhcp
ipmitool bmc reset cold

四、验证配置

BMC 重启完成后(约10秒),执行以下命令验证配置是否生效:


# 查看通道1配置(确认IP、掩码、网关是否正确)
ipmitool lan print 1

五、常见说明

  • 通道 1:专用 BMC 管理口(绝大多数服务器默认,无需修改);

  • 通道 2/8:共享网口(少数机型,如 Dell 部分服务器),将所有命令中的 1 替换为对应通道号即可;

  • 必须重启 BMC:所有网络配置修改后,需执行 ipmitool bmc reset cold 重启 BMC,配置才能生效,旧 IP 会同步失效;

  • 重启 BMC 仅影响管理口通信,不影响服务器系统正常运行,可放心执行。

六、整合版一键 BMC IP 配置脚本

为提升操作效率,整合「查看配置+设置静态IP」功能,创建一键脚本,无需分步执行命令,适配所有常见服务器通道。

6.1 脚本内容

创建脚本文件 bmc_network_config.sh,复制以下内容:


#!/bin/bash
# 一键查看/配置 BMC 静态 IP、子网掩码、网关
# 使用方法:
# 1. 仅查看当前配置:sudo bash bmc_network_config.sh show [通道号,默认1]
# 2. 配置静态IP:sudo bash bmc_network_config.sh set <BMC_IP> <子网掩码> <网关> [通道号,默认1]

# 检查是否以 root 权限运行
if [ $UID -ne 0 ]; then
    echo "请用 sudo 或 root 权限运行!"
    exit 1
fi

# 定义查看配置函数
show_bmc_config() {
    local CHANNEL=${1:-1}
    echo "========================================"
    echo "BMC 网络配置(通道 $CHANNEL)"
    echo "========================================"
    ipmitool lan print $CHANNEL | grep -E "Channel|IP Address Source|IP Address|Subnet Mask|Default Gateway IP|MAC Address"
    echo "========================================"
}

# 定义设置配置函数
set_bmc_config() {
    local BMC_IP=$1
    local NETMASK=$2
    local GATEWAY=$3
    local CHANNEL=${4:-1}

    echo "========================================"
    echo "开始配置 BMC 网络(通道 $CHANNEL)"
    echo "IP地址:$BMC_IP"
    echo "子网掩码:$NETMASK"
    echo "网关:$GATEWAY"
    echo "========================================"

    # 1. 设置为静态IP模式
    echo -n "🔧 设置静态IP模式..."
    ipmitool lan set $CHANNEL ipsrc static > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo "成功"
    else
        echo "失败"
        exit 1
    fi

    # 2. 设置IP地址
    echo -n "🔧 设置IP地址 $BMC_IP..."
    ipmitool lan set $CHANNEL ipaddr $BMC_IP > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo "成功"
    else
        echo "失败"
        exit 1
    fi

    # 3. 设置子网掩码
    echo -n "🔧 设置子网掩码 $NETMASK..."
    ipmitool lan set $CHANNEL netmask $NETMASK > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo "成功"
    else
        echo "失败"
        exit 1
    fi

    # 4. 设置网关
    echo -n "🔧 设置网关 $GATEWAY..."
    ipmitool lan set $CHANNEL defgw ipaddr $GATEWAY > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo "成功"
    else
        echo "失败"
        exit 1
    fi

    # 5. 冷重启BMC生效(关键)
    echo -n "🔧 重启BMC(约10秒)..."
    ipmitool bmc reset cold > /dev/null 2>&1
    sleep 10  # 等待BMC重启完成
    echo "完成"

    # 6. 验证配置结果
    echo "========================================"
    echo "📋 配置后验证结果(通道 $CHANNEL):"
    show_bmc_config $CHANNEL
    echo "========================================"
    echo "🎉 BMC IP 配置完成!请执行 ping $BMC_IP 验证连通性。"
}

# 主逻辑:解析命令参数
case $1 in
    show)
        # 仅查看配置:bash script.sh show [通道号]
        show_bmc_config $2
        ;;
    set)
        # 配置静态IP:bash script.sh set IP 掩码 网关 [通道号]
        if [ $# -lt 4 ]; then
            echo "参数不足!"
            echo "用法:sudo bash $0 set <BMC_IP> <子网掩码> <网关> [通道号,默认1]"
            echo "示例:sudo bash $0 set 192.168.0.100 255.255.255.0 192.168.0.1 1"
            exit 1
        fi
        set_bmc_config $2 $3 $4 $5
        ;;
    *)
        # 显示帮助
        echo "一键 BMC 网络配置脚本"
        echo "用法1(查看配置):sudo bash $0 show [通道号,默认1]"
        echo "用法2(配置静态IP):sudo bash $0 set <BMC_IP> <子网掩码> <网关> [通道号,默认1]"
        echo ""
        echo "示例1:查看通道1配置 → sudo bash $0 show"
        echo "示例2:配置通道1 → sudo bash $0 set 192.168.0.100 255.255.255.0 192.168.0.1"
        echo "示例3:配置通道8 → sudo bash $0 set 192.168.0.100 255.255.255.0 192.168.0.1 8"
        exit 1
        ;;
esac

6.2 脚本使用步骤

步骤1:赋予脚本执行权限


chmod +x bmc_network_config.sh

步骤2:查看当前 BMC 配置(推荐先执行)


# 查看默认通道1的配置
sudo bash bmc_network_config.sh show

# 查看通道8的配置(如Dell服务器共享网口)
sudo bash bmc_network_config.sh show 8

步骤3:配置静态 IP(核心功能)


# 示例:配置 IP=192.168.0.100,掩码=255.255.255.0,网关=192.168.0.1,通道=1
sudo bash bmc_network_config.sh set 192.168.0.100 255.255.255.0 192.168.0.1

# 示例:配置通道8(自定义通道)
sudo bash bmc_network_config.sh set 192.168.0.100 255.255.255.0 192.168.0.1 8

七、总结

  1. 文档包含「手动分步配置」和「一键脚本配置」两种方式,可根据需求选择:手动配置适合熟悉命令的用户,脚本配置适合快速操作、批量部署;

  2. 一键脚本整合了权限检查、参数校验、配置验证功能,避免新手误操作,配置完成后自动验证结果;

  3. 关键注意事项:

    • 所有操作必须用 root 权限运行(前缀加 sudo);

    • BMC 冷重启会断开当前 IPMI 连接,但不影响服务器系统运行;

    • 通道号默认1(多数服务器专用管理口),少数机型用8(共享网口),可先通过 show 命令确认;

    • 配置完成后,建议用 ping <BMC_IP> 验证连通性,确保配置生效。