【问题标题】:shell script wget not working when used as a cron job用作 cron 作业时,shell 脚本 wget 不起作用
【发布时间】:2011-09-23 04:07:47
【问题描述】:

我在一个 php Web 应用程序中有一个函数,需要由 cron 作业定期调用。最初我只是对 url 做了一个简单的 wget 来调用函数,一切正常,但是自从我们添加了用户身份验证后,我就无法让它工作了。

如果我手动执行这些命令,我​​可以登录,获取 cookie,然后访问正确的 url:

site=http://some.site/login/in/here
cookie=`wget --post-data 'username=testuser&password=testpassword' $site -q -S -O /dev/null 2>&1 | awk '/Set-Cookie/{print $2}' | awk 'NR==2{print}'`
wget -O /dev/null --header="Cookie: $cookie" http://some.site/call/this/function

但是当作为脚本执行时,无论是手动还是通过 cron,它都不起作用。

我是 shell 脚本的新手,任何帮助将不胜感激

这是在 ubuntu 服务器 10.04 上运行的

【问题讨论】:

  • 您遇到的错误是什么?您很可能需要 chmod 文件(允许执行文件)
  • 究竟是什么错误?您可以查看邮件(mailmutt)并查看错误消息

标签: linux bash shell cron wget


【解决方案1】:

先搞定简单的事情-

  1. 我假设文件以#!/bin/bash 或其他内容开头
  2. 你有chmodded 文件+x
  3. 您使用的是 unix 0x0d 行尾

我猜你不希望将任何变量返回给调用 shell?

尝试tee将每个命令的输出写入日志文件失败。

【讨论】:

  • shell 脚本是由 PHP 生成的,并且有 CRLF 行结尾。我去掉了回车,一切都很好。谢谢!
【解决方案2】:

理论上,与手动执行这些和使用脚本的唯一区别是时间。

尝试在最后一个命令之前插入sleep 5 左右。也许 http 服务器会进行一些内部通信,这需要一段时间。很难说,因为你没有发布你得到的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-09
    • 2021-02-03
    • 2016-11-07
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    相关资源
    最近更新 更多