Я написал следующий скрипт bash, чтобы отправить мне предупреждение, если есть проблема с моим веб-сайтом:
#!/bin/bash
# 1. download the page
BASE_URL="https://www.example.com/ja"
JS_URL="https://www.example.com/"
# # 2. search the page for the following URL: /sites/default/files/google_tag/google_tag.script.js?[FIVE-CHARACTER STRING WITH LETTERS AND NUMBERS]
curl -k -L ${BASE_URL} 2>/dev/null | grep -Eo "/sites/default/files/google_tag/google_tag.script.js?[^<]+" | while read line
do
# 3. download the js file
if curl -k -L ${JS_URL}/$line | grep gtm_preview >/dev/null 2>&1; then
# 4. check if this js file has the text "gtm_preview" or not; if it does, send an email
# echo "Error: gtm_preview found"
sendmail error-ec2@example.com < email-gtm-live.txt
else
echo "No gtm_preview tag found."
fi
done
Я запускаю это из экземпляра Amazon EC2 Ubuntu.Когда я выполняю сценарий вручную, например ./script.sh
, я получаю сообщение электронной почты в почтовом ящике веб-почты на example.com
.
Однако, когда я настраиваю этот сценарий для запуска через crontab, почта не отправляется черезИнтернет;вместо этого он отправляется на /var/mail
в экземпляре EC2.
Я не понимаю, почему это происходит или что я могу сделать, чтобы это исправить.Почему sendmail ведет себя по-разному, если он запускается из bash, а не из crontab?