【问题标题】:Crontab cron job will not run with url with parameterCrontab cron 作业不会使用带参数的 url 运行
【发布时间】:2015-01-03 02:46:04
【问题描述】:
38  17  5   11  *    /usr/bin/sudo -u www /usr/bin/curl -sS "http://123.com/index.php?email=1&test=1"

我尝试运行这个 php 文件,一旦收到这两个参数,它就会发送带有 php 类的电子邮件。但似乎 cron 无法识别此命令。我想知道这里的错误在哪里?或者我可以在命令行中运行它并对其进行故障排除的方法也将非常有帮助!

文件在浏览器中完美运行,具有完全相同的 url 字符串。

我还尝试了另一种变体:

38  17  5   11  *       root    /usr/bin/sudo -u _www /usr/bin/curl -sS "http://123.com/index.php?email=1&test=1"

我尝试在命令行中执行这些 crul 命令进行测试:

curl "http://123.com/index.php?email=1&test=1"

curl "http://123.com/index.php?email=1\&test=1"

更新

现在我试过了

echo "TEST" >> $CRONLOG
/usr/bin/sudo -u _www /usr/bin/curl -sS "http://123.com/index.php?email=1&test=1" >> $CRONLOG

更新

fedorqui 提供的转义解决方案在我的测试文件中运行良好,所以我的原始文件有其他问题。调查

最终更新

结果表明,我们在 php 文件中使用 php 包含的身份验证文件阻止了 php 文件进一步运行!所以它不是(只是)一种语法,而是忘记转义& + auth 文件的混合。

【问题讨论】:

  • 如果你逃避&怎么办? http://123.com/index.php?email=1\&test=1"
  • 错误在您更新的答案中您有/&,而我说的是\&。你试过哪一个?
  • 好的!嗯,为了安全起见,我会将此代码移至脚本并在 crontab 中调用该脚本。转义字符等肯定有一些问题。另外,你检查了 cron 的日志吗?有什么痕迹吗?
  • @fedorqui 我在测试文件中尝试过,/escap 有效!但不在我的原始文件中。我认为该文件中可能发生的更复杂的事情可能会导致这种情况!正在调查!

标签: curl cron crontab cron-task


【解决方案1】:

正如在 cmets 中看到的,& 字符具有特殊含义,因此要使其被视为文字,您需要对其进行转义。

来自

38 17 5 11 * root ... curl -sS "http:// ... email=1&test=1"

38 17 5 11 * root ... curl -sS "http:// ... email=1\&test=1"
                                                   ^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    • 2011-08-16
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    相关资源
    最近更新 更多