跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 世界
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠

GPU技术交流论坛

  1. 主页
  2. 版块
  3. 知识交流
  4. 运维部署交流
  5. 修复开启Sriov开启后vmbr无法联网的问题

修复开启Sriov开启后vmbr无法联网的问题

已定时 已固定 已锁定 已移动 运维部署交流
1 帖子 1 发布者 28 浏览 1 关注中
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • F 离线
    F 离线
    fushinn
    编写于 最后由 fushinn 编辑
    #1

    复制粘贴到

    /usr/bin/fix_vmbr
    

    然后

    chmod 755 /usr/bin/fix_vmbr
    

    使用交互式脚本自动修复

    fix_vmbr
    

    以下是脚本

    #!/bin/bash
    # fix_vmbr - 为 VM/CT 添加 bridgefix 钩子脚本(自动创建/下载)
    set -euo pipefail
    
    HOOKSCRIPT_ID="local:snippets/bridgefix.sh"
    SNIPPETS_DIR="/var/lib/vz/snippets"
    HOOKSCRIPT_PATH="$SNIPPETS_DIR/bridgefix.sh"
    HOOKSCRIPT_URL="https://raw.githubusercontent.com/jdlayman/pve-hookscript-sriov/master/bridgefix.sh"
    
    # 检查 pvesh, jq, qm, pct
    for cmd in pvesh jq qm pct wget; do
        if ! command -v $cmd >/dev/null 2>&1; then
            echo "❌ 未找到命令: $cmd,请安装后重试。"
            exit 1
        fi
    done
    
    # 创建目录并下载 bridgefix.sh(如果不存在)
    if [[ ! -f "$HOOKSCRIPT_PATH" ]]; then
        echo "📦 $HOOKSCRIPT_PATH 不存在,正在创建目录并下载..."
        mkdir -p "$SNIPPETS_DIR"
        wget -O "$HOOKSCRIPT_PATH" "$HOOKSCRIPT_URL"
        chmod +x "$HOOKSCRIPT_PATH"
        echo "✅ 下载完成:$HOOKSCRIPT_PATH"
    fi
    
    echo "=============================="
    echo " Proxmox VM / CT 列表"
    echo "=============================="
    
    RESOURCES=$(pvesh get /cluster/resources --type vm --output-format json)
    
    printf " %-6s | %-6s | %s\n" "ID" "类型" "名称"
    printf " %s\n" "-------------------------------------------------"
    
    echo "$RESOURCES" | jq -r '.[] | "\(.vmid)\t\(.type)\t\(.name // "-")"' | \
    while IFS=$'\t' read -r vmid vtype name; do
        [[ "$vtype" == "qemu" ]] && vtype="VM"
        [[ "$vtype" == "lxc" ]] && vtype="CT"
        printf " %-6s | %-6s | %s\n" "$vmid" "$vtype" "$name"
    done
    
    echo ""
    read -r -p "请输入要修复的 VMID: " VMID
    
    TYPE=$(echo "$RESOURCES" | jq -r --arg id "$VMID" '.[] | select(.vmid == ($id|tonumber)) | .type')
    
    if [[ -z "$TYPE" || "$TYPE" == "null" ]]; then
        echo "❌ 找不到 VMID $VMID"
        exit 1
    fi
    
    echo ""
    echo "检测到:VMID=$VMID 类型=$TYPE"
    echo ""
    
    if [[ "$TYPE" == "qemu" ]]; then
        echo "➡️  为虚拟机设置 hookscript..."
        qm set "$VMID" --hookscript "$HOOKSCRIPT_ID"
    elif [[ "$TYPE" == "lxc" ]]; then
        echo "➡️  为容器设置 hookscript..."
        pct set "$VMID" --hookscript "$HOOKSCRIPT_ID"
    else
        echo "❌ 未知类型:$TYPE"
        exit 1
    fi
    
    echo "✅ 已成功为 $TYPE $VMID 设置 hookscript:$HOOKSCRIPT_ID"
    
    1 条回复 最后回复
    0
    回复
    • 在新帖中回复
    登录后回复
    • 从旧到新
    • 从新到旧
    • 最多赞同


    • 登录

    • 没有帐号? 注册

    • 登录或注册以进行搜索。
    • 第一个帖子
      最后一个帖子
    0
    • 版块
    • 最新
    • 标签
    • 热门
    • 世界
    • 用户
    • 群组