请教站内搞服务器的大佬,关于 bios(通过 bmc web 进入 kvm web bios 页面)如何做自动化测试 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ctrlmymood
V2EX    程序员

请教站内搞服务器的大佬,关于 bios(通过 bmc web 进入 kvm web bios 页面)如何做自动化测试

  •  
  •   ctrlmymood 337 天前 2427 次点击
    这是一个创建于 337 天前的主题,其中的信息可能已经有所发展或是发生改变。

    当前尝试过截图,识别图像内容后判断,然后再操作键盘鼠标,太太麻烦复杂了,语言 python

    第 1 条附言    336 天前
    首先非常感谢各位的答复!根据各位 v2exer 的回复,我大致明确了一个方向(优先录制+截图+ocr 部分内容校验)
    背景:bios 自动化测试这里只考虑 java kvm 场景
    1. 按键精灵,看看是否可以录制
    2.pyatuogui 是我最开始的想法,截图+ocr ,有内容判断的测试项目

    后期时间宽松我会尝试:
    3.视频流我不是很了解这块逻辑,但是我学习的一个方向
    4.其它新的思路我后期可以借鉴下,当下主要是迫于效率出结果
    第 2 条附言    329 天前
    当前已经确认技术实现细节
    1. opencv + numpy 实现找图,找色
    2. tesseract 实现找字
    3. pyautogui 实现截图和操作键盘之类
    以上 使用 python
    19 条回复    2025-01-16 09:24:11 +08:00
    encro
        1
    encro  
       337 天前
    如果你要简单,就固定屏幕宽高,按键精灵方式实现?
    encro
        2
    encro  
       337 天前
    PyAutoGUI?
    linuxsir2020
        3
    linuxsir2020  
       337 天前
    BMC ? 联想 XCC REST API 里有 BIOS 接口。。。
    不清楚能满足需求否,没仔细研究过。
    Morxi
        4
    Morxi  
       337 天前
    ctrlmymood
        5
    ctrlmymood  
    OP
       337 天前
    @Morxi 由于 BIOS 界面通常不支持传统的 HTML/CSS 渲染,可能无法直接从浏览器中获取清晰的文本信息,我没有使用 playwright 尝试过,回头试下,如果可以那的确就容易了
    ctrlmymood
        6
    ctrlmymood  
    OP
      &bsp;337 天前
    @encro #1 我感觉可行,以结果为目的,以过程简单为标准
    kuanat
        7
    kuanat  
       337 天前
    我给两个思路,OP 的判断是没问题的,常规自动化处理不了这种视频流内的信息。

    1.
    如果设备 bmc 比较新,我记得好几年前多数 bmc 都支持 redfish 协议了,那么你在 bios 里面要测试的项目可能多数可以直接走 bmc 的 redfish api 接口来实现。

    2.
    如果设备 bmc 比较老,那就通过 web 页面先抓一下输出的视频流,这个大概率是类似固定摄像机那种 mjpeg 流,本质上就是固定间隔的截图。这样可以省去在 web 界面上截图的逻辑。
    然后就是逆向一下 web 界面发送按键序列的接口,用来做控制。这里需要注意的是,大概率还是要通过截图来判断状态,因为 bmc 那边接收到按键请求,但 bmc 把按键请求传递给主机这个环节不一定能 100% 正确响应。
    再之后就是自动化的事情了。
    kuanat
        8
    kuanat  
       337 天前
    再补充一点,bios 里的选项位置是固定的,所以并不需要 OCR 之类的手段。多数时间只需要判断对应位置的选项是不是有高亮或者反色即可,即只需要判断当前光标是否选中了目标。
    aru
        9
    aru  
       337 天前
    @ctrlmymood
    bmc 一般支持 sol (网络串口通信)
    这个应该比较简单
    guanzhangzhang
        10
    guanzhangzhang  
       337 天前
    如果你想自动做 raid 和装机设置 ip ,可以看我之前搞过的,带资料文档
    https://github.com/zhangguanzhang/Installer
    julyclyde
        11
    julyclyde  
       337 天前
    识别图像自动化测试?

    感觉好像是 totally 外行的思路啊,就是对什么不懂的就搞个外挂
    flyqie
        12
    flyqie  
       337 天前 via Android
    没办法,只能这么干。

    新的可以用 h5 ,老的只能 java ikvm ,协议一般是拿 rfb 改的,而且各个厂商之间区别蛮大。

    这个东西不好做,别的方法更难搞。
    flyqie
        13
    flyqie  
       337 天前 via Android
    @kuanat #7

    redfish 跟楼主这个需求貌似没有什么特别大的关系吧?

    感觉楼主这个需求还是得折腾视频流。
    yw9381
        14
    yw9381  
       337 天前
    我给个思路,但自己也没试过,BMC 本质可以看做直接在机器面前操作,现在新的基于 H5 的基本都是 websocket 的,是否可以逆出来具体的协议,实现按键,鼠标移动,点击这些基础功能,画面渲染也可以直接接过来 WS 数据绘图以后识别,比直接在浏览器里操作要方便得多
    cctv180
        15
    cctv180  
       337 天前
    我发个小众的 aardio 的自动化示范代码里面有找图找字找色,我感觉改改就能用了.
    lisxour
        16
    lisxour  
       337 天前
    有 bios 远控,前几天还在 b 站刷到过,向日葵 Q2Pro
    KIMI360
        17
    KIMI360  
       337 天前
    之前做 bios 测试,都是串口连接,然后有工具可以发送键盘指令,但也相当于盲操作。
    aru
        18
    aru  
       336 天前
    @KIMI360
    对。我以前有一批机器是无显卡的,需要改 bios 设置,就是记住了进入 bios 后的操作步骤。
    开机按键盘盲操
    lan894734188
        19
    lan894734188  
       336 天前
    看需求 尽量走集成的 redfish api.
    因为 kvm h5 其实并不稳定
    关于     帮助文档     自助推广系统     博客     API     FAQ   &nbs; Solana     5837 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 72ms UTC 02:17 PVG 10:17 LAX 18:17 JFK 21:17
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86