GET Cron 작업에 406 오류가 발생했습니까?

GET Cron 작업에 406 오류가 발생했습니까?

이 cron에서 406 오류 페이지가 나타납니다.

편집하다

대신 wget을 사용하도록 cron을 업데이트했지만 여전히 페이지에서 출력을 얻지 못하고 있습니다. 새로운 crontab은 다음과 같습니다.

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

그러나 이것은 로그 파일을 사용하지도 않습니다. 대신 이메일이 와요. 이메일 출력은 다음과 같습니다.

--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]

나는 또한 (올바른 출력을 얻기 위해) 이 crontab을 시도했습니다.

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

하지만 이것도 이메일과 동일한 로그를 제공합니다. 페이지는 내가 로그 파일에 기록하고 싶은 텍스트를 출력합니다. 그 작업을 수행하는 방법에 대한 아이디어가 있습니까?

다시 한 번 감사드립니다!

오래된

다음은 crontab입니다(cPanel에서 복사).

    * * * * * GET https://abc.com/cron/sendBulletinEmails.php >>
/home/abc/public_html/cron/logs/sendBulletinEmails.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>

또한 내 브라우저에서 실행하면 작동합니다.

왜 이런 일이 발생하는지에 대한 아이디어가 있습니까? 감사합니다 =)

답변1

cron에서 이메일을 받는 것은 의도된 것입니다. >/dev/null 2>&1줄 끝에 추가하여 이를 비활성화할 수 있습니다 . (크론에 대한 자세한 내용은 여기를 참조하세요. http://adminschoice.com/crontab-quick-reference)

나머지 질문은 wget에 대해 좀 더 읽어보면 해결될 수 있을 것 같습니다. 표준 출력 리디렉션을 사용하여 출력을 로그 파일로 보내려고 합니다. 해당 파일의 내용은 일반적으로 화면에 표시되는 내용일 뿐입니다. Wget은 파일 자체를 표시하지 않으므로 여기서는 출력 리디렉션이 작동하지 않습니다. 좋은 소식은 wget에 출력 파일 관리용 스위치가 내장되어 있다는 것입니다.

이 시도:

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

답변2

서버는 자동화된 도구를 차단하기 위해 HTTP_USER_AGENT를 찾고 있을 수 있습니다. 가능하다면 'wget'을 사용해 보세요. -U or --user-agent=AGENT스크립트가 유효한 Firefox/Interner Explorer 브라우저 세션인 것처럼 표시되도록 명령줄의 스위치를 지원합니다 .

그렇지 않으면 해당 Perl 모듈의 보다 강력한 기능을 사용하고 get을 직접 호출하는 대신 cron 작업이 스크립트를 실행하도록 작은 스크립트를 작성해야 할 수도 있습니다. 여기에서 이에 대한 몇 가지 예를 찾았습니다.http://perlmeme.org/tutorials/lwp.html

관련 정보