oscap-ssh --local-files选项报错:无此文件或目录问题求助
问题描述
使用OpenSCAP Script Engine编写自定义脚本,通过oscap-ssh远程扫描主机时,已通过--local-files选项成功将bash脚本目录上传至远程临时工作目录,但主脚本调用子脚本时提示“无此文件或目录”。
环境信息
- OpenSCAP版本:
oscap 1.3.6 - 操作系统:Rocky Linux 8.6
- 执行命令:
oscap-ssh <user>@<ip> 22 xccdf eval --profile <profile> --report report.html --local-files </path/to/directory/> <my_script>.xml
报错内容
- 脚本执行错误:
错误:执行探针时出错:脚本 '/tmp/oscapXXXX/check_script.sh' 返回非零退出码 127
标准错误输出:/bin/bash: /tmp/oscapXXXX/check_script.sh: 无此文件或目录
- XCCDF评估失败:
错误:XCCDF结果:'check-script'规则的评估失败
错误:评估脚本探针时出错
解决方案
修正脚本路径引用
远程临时目录路径为动态生成(格式为/tmp/oscapXXXX),主脚本不要写死本地路径,改用相对路径调用同目录脚本,比如./check_script.sh;或者使用OpenSCAP提供的环境变量$OVAL_TMP_DIR定位临时文件,写法为$OVAL_TMP_DIR/check_script.sh。确保脚本具备执行权限
在本地给所有脚本添加执行权限:chmod +x /path/to/directory/*.sh保证
oscap-ssh上传时保留权限,避免远程执行因权限不足报错。验证
--local-files参数有效性
确认--local-files后跟随的是目录绝对路径,且目录包含所有依赖脚本。若仅需上传单个文件,可直接指定文件路径,避免目录结构导致文件遗漏。手动验证远程临时目录
报错后立即登录远程主机,查看/tmp/oscapXXXX目录下的文件是否存在、路径是否匹配,确认文件是否完整上传。
内容的提问来源于stack exchange,提问作者gonzalofdv

