406 Erro com o trabalho GET Cron?

1

Estou recebendo uma página de erro 406 com este cron.

EDITAR

Eu atualizei o cron para usar o wget, mas ainda não obtive a saída da página. aqui está o novo crontab:

/usr/bin/wget "https://abc.com/cron/sendBulletinEmails.php" >> /home/abc/public_html/cron/logs/sendBulletinEmails.log

no entanto, isso não é mesmo usando o arquivo de log. Eu recebo um e-mail. aqui está a saída de e-mail:

--09:20:01--  https://abc.com/cron/sendBulletinEmails.php
           => 'sendBulletinEmails.php'
Resolving abc.com... 69.91.162.123
Connecting to fin-iq.com|69.91.162.123|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]

    0K                                                         122.58 B/s

09:20:02 (122.58 B/s) - 'sendBulletinEmails.php' saved [101]

Eu também tentei este crontab (para obter a saída correta):

/usr/bin/wget --append-output=/home/abc/public_html/cron/logs/sendBulletinEmails.log "https://abc.com/cron/sendBulletinEmails.php"      

mas, isso também me dá o mesmo log do email. a página envia o texto, que é o que eu quero que esteja logado no meu arquivo de log. alguma idéia de como fazer isso funcionar?

obrigado novamente!

OLD

aqui é o crontab (copiado do cPanel):

    * * * * * GET https://abc.com/cron/sendBulletinEmails.php >>
/home/abc/public_html/cron/logs/sendBulletinEmails.log

aqui está o log:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>406 Not Acceptable</title>
</head><body>
<h1>Not Acceptable</h1>
<p>An appropriate representation of the requested resource /cron/sendSurveyEmails.php could not be found on this server.</p>
<p>Additionally, a 404 Not Found
error was encountered while trying to use an ErrorDocument to handle the request.</p>
</body></html>

também, quando eu corro do meu próprio navegador, funciona.

alguma idéia de por que isso está acontecendo? obrigado =)

    
por Garrett 09.08.2010 / 22:40

2 respostas

2

Obter um email do cron é por design. Você pode desabilitar isso adicionando >/dev/null 2>&1 ao final da linha. (Leia mais sobre o cron aqui: link )

Acho que o resto da pergunta poderia ser resolvido lendo um pouco mais sobre o wget. Você está tentando enviar a saída para um arquivo de log usando o redirecionamento de saída padrão. O conteúdo desse arquivo será sempre o que você normalmente veria na tela. O Wget não exibe o arquivo em si, portanto, o redirecionamento de saída não funcionará aqui. A boa notícia é que o wget tem um comutador integrado para gerenciar o arquivo de saída.

Tente isto:

/usr/bin/wget -O /home/abc/public_html/cron/logs/sendBulletinEmails.log "https://abc.com/cron/sendBulletinEmails.php" >/dev/null 2>&1
    
por 10.08.2010 / 16:04
1

O servidor pode estar procurando por HTTP_USER_AGENT para bloquear ferramentas automatizadas. Se estiver disponível para você, tente "wget". Ele suporta a opção -U or --user-agent=AGENT na linha de comando para ajudar seu script a aparecer como se fosse uma sessão válida do navegador Firefox / Interner Explorer.

Caso contrário, talvez seja necessário escrever um pequeno script para usar recursos mais robustos desse módulo Perl e fazer com que o trabalho cron execute o script em vez de chamar get diretamente. Encontrei alguns exemplos disso aqui: link

    
por 09.08.2010 / 23:39

Tags