# Сюда сценарий попадает, когда обнаружены изменения и нужно послать
#·· пользователю содержимое файла. new и заменить им старую копию
#·· для следующего вызова сценария.
if ["$2"!= "-"]; then
··(echo "Content-type: text/html"
····echo "From: $fromaddr (Web Site Change Tracker)"
····echo "Subject: Web Site $1 Has Changed"
····echo ""
··) | $sendmail −t
else
··# Вывод различий на экран не кажется хорошим решением.
··#·· Сможете предложить что-то получше?
··diff $sitearchive/$fname $sitearchive/${fname}.new
fi
# Обновить сохраненную копию веб-сайта.
mv $sitearchive/${fname}.new $sitearchive/$fname
chmod 755 $sitearchive/$fname
exit 0
Как это работает
Получив URL и адрес электронной почты, этот сценарий извлекает содержимое веб-страницы и сравнивает его с содержимым сайта, сохраненным при предыдущей проверке. Если сайт изменился, новая страница отправляется по электронной почте указанному адресату после небольших изменений, цель которых — обеспечить работоспособность ссылок на изображения и в атрибутах href. Остановимся подробнее на этих изменениях, начиная со строки
Команда lynx извлекает исходный код веб-страницы
Обратите также внимание, что адрес получателя указан в команде echo
Запуск сценария
Данный сценарий требует два параметра: URL сайта (для правильной работы сценария должны использоваться полные адреса URL, начинающиеся с http://) и адрес электронной почты (или список адресов, разделенных запятыми), куда следует послать измененную веб-страницу. Или, если хотите, вместо адреса электронной почты можно просто использовать — (дефис), чтобы только вывести на экран результаты сравнения командой diff.
Результаты
Когда сценарий загружает веб-страницу в первый раз, он автоматически посылает ее по указанному адресу, как показано в листинге 7.21.
Листинг 7.21. Первый запуск сценария changetrack
$ changetrack http://www.intuitive.com/ [email protected]
Status: first visit to http://www.intuitive.com/. Copy archived for future
analysis.
Все последующие проверки сайта http://www.intuitive.com/ будут заканчиваться отправкой копии по электронной почте, только если страница изменится после предыдущего вызова сценария. Это может быть результатом простого исправления единственной опечатки или сложного переоформления всей страницы. С помощью сценария можно следить за изменениями на любых веб-сайтах, но лучше всего, пожалуй, он будет работать с теми, которые обновляются нечасто: если выбрать целью главную страницу BBC News, проверка потребует значительного объема процессорного времени, потому что этот сайт