2011-09-22 160 views
1

我在一个php web应用程序中有一个函数,它需要定期由cron作业调用。最初我只是做了一个简单的wget到网址来调用该函数,一切正常,但自从我们添加用户身份验证我有麻烦得到它的工作。shell脚本wget在用作cron作业时不工作

如果我手动执行这些命令我可以登录,得到的cookie,然后访问正确的网址:

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

+0

你得到的错误是什么?这很可能需要chmod文件(允许执行文件) –

+0

错误究竟是什么?您可以检查邮件('mail'或'mutt')并​​查看错误消息 –

回答

0

OK简单的事情先 -

  1. 我认为该文件开始#!/bin/bash什么
  2. 你有chmod DED文件+x
  3. 您使用的UNIX 0x0d行结尾

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

如果没有将每个命令的输出结果写入日志文件,

+0

shell脚本由PHP生成并具有CRLF行尾。我剥掉了回车,一切都很好。谢谢! – brandon

0

从理论上讲,从手动执行这些并使用脚本将是时间的唯一区别。

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