Robot Framework执行远程Linux命令遇${ssh}.Login关键字错误求助
解决Robot Framework SSH登录错误及相关优化方案
错误根源
${ssh}.Login 是错误的语法,Robot Framework 中调用 SSHLibrary 关键字不需要通过连接变量加.的方式,SSHLibrary 的关键字是全局可用的,只需指定连接别名即可。
完整修正后的测试用例
*** Settings *** Library ExcelLibrary Library SSHLibrary *** Variables *** ${EXCEL_FILE} D:/dev/linuxcommands.xlsx ${SHEET_NAME} Sheet1 ${HOST} 192.168.100.117 ${USERNAME} root ${PASSWORD} Hitokiri ${PORT} 22 *** Keywords *** Execute Command On Remote Server [Arguments] ${ssh_alias} ${command} Switch Connection ${ssh_alias} ${output} Execute Command ${command} Log 执行命令: ${command} Log 命令输出: ${output} *** Test Cases *** Execute Excel Commands On Remote Server [Setup] Open Excel Document ${EXCEL_FILE} ${SHEET_NAME} mode=r # 建立SSH连接并获取别名 ${ssh} Open Connection ${HOST} port=${PORT} # 使用别名登录远程服务器 Login ${USERNAME} ${PASSWORD} alias=${ssh} # 获取Excel行数 ${rows}= Get Row Count ${SHEET_NAME} # 遍历每行读取命令并执行 :FOR ${row} IN RANGE 1 ${rows} \ # 假设命令存放在第1列,按行读取 \ ${command}= Read Cell Data ${SHEET_NAME} ${row} 1 \ Run Keyword If '${command}' != '' Execute Command On Remote Server ${ssh} ${command} [Teardown] Close All Connections [Teardown] Close Excel Document
关键修正点说明
- SSH登录语法修正:将
${ssh}.Login替换为Login ${USERNAME} ${PASSWORD} alias=${ssh},通过alias参数指定要操作的连接,符合SSHLibrary的关键字调用规范。 - Excel打开模式修正:将
mode=w改为mode=r,避免写入模式清空原有Excel文件,确保能正常读取存储的命令。 - 补充缺失关键字:新增
Execute Command On Remote Server关键字,封装远程命令执行逻辑,切换到指定连接后调用Execute Command执行命令并记录输出。 - 单元格读取逻辑优化:改用
Read Cell Data按行号列号读取命令,比按单元格名称读取更稳定(需确保Excel中命令存放在第1列,若实际列不同可修改第三个参数)。
额外注意事项
- 确保Excel文件中每行的命令格式正确,转义符(如
\>)在Excel中不需要额外转义,直接存储echo "SELINUX=disabled" > /etc/selinux/config即可。 - 执行涉及系统配置的命令需确保远程服务器的root权限足够,避免权限错误。
- 测试完成后通过
Close Excel Document关闭文件连接,避免资源泄漏。
内容的提问来源于stack exchange,提问作者Ric Dingal
相关产品推荐
相关产品推荐

