You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Robot Framework中如何正确保存并对比sslscan命令输出?

解决sslscan输出获取与密码验证问题

错误原因

你遇到的报错核心是Robot Framework Process库的Run Process返回对象没有output属性,正确存储命令标准输出的属性是stdout。同时代码里还有两处小问题:

  • Log语句引用了未定义的${output}变量
  • 关键字调用时大小写不匹配(Check secureCiphers 和定义的Check Secure Ciphers不一致)

修正后的完整代码

*** Settings ***
    Library           OperatingSystem
    Library           Process
*** Variables ***
    ${endpoint}    myendpoint.com

*** Test Cases ***
    Check ciphers
        ${secure_ciphers} =    Create list    ECDHE-RSA-AES128-GCM-SHA256    DHE-RSA-AES128-GCM-SHA256    ECDHE-RSA-AES256-GCM-SHA384
        ${insecure_ciphers} =    Create list    ECDH    aNULL    eNULL    
        # 执行sslscan命令,获取执行结果对象
        ${result} =    Run process    sslscan --no-cipher-details --no-compression --no-fallback --no-groups --no-heartbleed --no-colour ${endpoint}    shell=True
        # 提取标准输出并转成字符串(避免bytes类型问题)
        ${stdout} =    Convert To String    ${result.stdout}
        Log    SSLScan Output: ${stdout}
        # 调用关键字时保持大小写一致
        Check Secure Ciphers    ${stdout}    ${secure_ciphers}
        Check Insecure Ciphers    ${stdout}    ${insecure_ciphers}

*** Keywords ***
    Check Secure Ciphers
        [Arguments]    ${output}    ${secureCiphers}
        FOR    ${cipher}    IN    @{secureCiphers}
            Log    Checking secure cipher: ${cipher}
            Should Contain    ${output}    ${cipher}
        END

    Check Insecure Ciphers
        [Arguments]    ${output}    ${insecureCiphers}
        FOR    ${cipher}    IN    @{insecureCiphers}
            Log    Checking insecure cipher: ${cipher}
            Should Not Contain    ${output}    ${cipher}
        END

额外优化建议

  • 验证命令执行状态:添加返回码检查,确保sslscan成功运行
    Should Be Equal As Integers    ${result.returncode}    0    sslscan命令执行失败
    
  • 精准匹配密码:如果只需要验证特定TLS版本的密码,可以先提取对应段落,比如只取TLSv1.2的部分:
    ${tls12_section} =    Get Lines Containing String    ${stdout}    TLSv1.2
    
  • 处理编码异常:如果Convert To String报错,可指定编码格式:
    ${stdout} =    Convert To String    ${result.stdout}    encoding=utf-8
    

内容的提问来源于stack exchange,提问作者BraveAdmin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 03:42:52