向Rundeck传文件后Python脚本无法读取,请求排查解决
问题分析与修复方案
核心原因
你的Rundeck作业配置了节点过滤器filter: XYXYX.com,意味着Python脚本是在远程目标节点XYXYX.com上执行的,但通过Rundeck文件选项上传的文件,默认只存储在Rundeck服务器本地(路径/home/rundeck/var/upload/...),远程节点上根本不存在这个文件,所以所有路径检测都会返回False。
解决方案
根据你的执行场景选择对应方案:
方案1:脚本改在Rundeck服务器本地执行
如果你的脚本不需要在远程节点运行,直接修改作业的节点过滤器为Rundeck服务器本身:
- 把作业定义中的
nodefilters.filter改为localhost(或者Rundeck服务器的主机名) - 这样脚本在Rundeck服务器执行时,就能直接访问到
/home/rundeck/var/upload/...路径下的上传文件,路径检测会正常返回True
方案2:将上传文件同步到远程节点执行
如果必须在远程节点XYXYX.com执行脚本,需要先把上传的文件拷贝到远程节点,再执行脚本:
- 添加文件拷贝步骤:在Python脚本执行步骤之前,新增一个
File Copy类型的步骤:- 源文件路径填写
${file.history_path} - 远程目标路径填写远程节点上的可读写路径,比如
/tmp/${file.history_path.fileName}
- 源文件路径填写
- 修改Python脚本执行参数:把原来传递的
${file.history_path}改成远程节点的目标路径,比如:/opt/project_venv/project/bin/python /opt/projects/project_file/main.py /tmp/${file.history_path.fileName} ${file.history_path.fileName} ${option.method} ${option.exp_format} /tmp/${file.file2.fileName} ${file.file2.fileName} ${option.start} ${option.end} - 确保远程节点上的Rundeck执行用户(默认是
rundeck)对/tmp目录有读写权限。
额外验证点
- 确认Rundeck服务器上的
rundeck用户对/home/rundeck/var/upload/目录有读权限(默认已经配置好,但可以用ls -l /home/rundeck/var/upload/验证) - 如果使用方案2,确认远程节点的
rundeck用户能访问目标路径(比如/tmp)
测试修改后的脚本
修改完成后,你的Python脚本就能正常找到文件,后续可以直接用Pandas读取:
import pandas as pd df = pd.read_excel(hsp) # 这里hsp现在对应远程节点上的正确路径
内容的提问来源于stack exchange,提问作者user12358312
相关产品推荐
相关产品推荐

