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

Rundeck远程节点执行含星号的Cron表达式脚本异常求助

解决Rundeck远程节点执行脚本时Cron星号被识别为通配符的问题

问题原因

Rundeck远程执行脚本时,参数中的*会被远程节点的Shell(如bash)当作通配符,展开为当前目录下的所有文件名,导致原始Cron表达式被篡改。而本地/终端执行时,参数不会经过Shell的二次解析,因此能正常保留*。

解决方法

1. 在Rundeck作业参数中直接转义星号

输入参数时,给每个*添加反斜杠转义,将参数设置为:
0 \* \* \* \*
这样远程Shell收到的就是经过转义的星号,不会触发通配符展开。

或者用单引号包裹整个Cron表达式(需注意Rundeck的参数解析规则,必要时转义单引号):
\'0 * * * *\'

2. 修改脚本禁用通配符展开

在脚本开头添加set -f命令,强制禁用Shell的通配符扩展功能,处理完参数后可按需恢复:

#!/bin/bash
set -f  # 禁用通配符扩展
cron_expression="$1"
echo "Crontab expression: $cron_expression"
set +f  # 可选:恢复通配符扩展,避免影响后续命令

3. 配置Rundeck节点执行器的Shell参数

如果使用SSH作为节点执行器,可在节点配置或作业的Node Executor设置中,修改Shell调用命令为:
/bin/bash -f -c
-f参数会让bash默认禁用通配符展开,从根源避免参数被解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 08:46:00