Цель, которую я пытаюсь достичь, - извлечь HTML-код с веб-сайта и записать его в файл. Как только это будет сделано, я хочу зациклить его, чтобы сделать это снова и записать в другой файл. После того, как второй файл будет написан, я хочу, чтобы он сравнил два файла вместе, чтобы увидеть, не изменилось ли что-нибудь. Вот что у меня есть, но это не работает:
#!/bin/bash
echo "Hopefully this will do everything at once!"
while true;
do
wget -q -O - http://website.com > websitebaseline.txt
if -e websitebaseline.txt
then
wget -q -O - http://www.website.com > websitechange.txt
echo "Update to websitechange.txt has been made"
if !-e websitebaseline.txt
then
wget -q -O - http://www.website.com > webbaseline.txt
echo "Baseline has been created"
if -e websitebaseline.txt websitechange.txt
then diff -y websitebaseline.txt websitechange.txt --supress-common-lines > Changeinsite.txt
if !-e websitebaseline.txt
then
wget -q -O - http://www.website.com > websitebaseline.txt echo "Baseline has been created"
elif !-e websitechange.txt
then
wget -q- O - http://websitename.com > websitenamechange.txt
echo "Update has been made"
sleep 100;
done
Слишком все усложняет.
#!/bin/bash
left=$(mktemp)
right=$(mktemp)
url="http://url.example.com/"
trap 'rm -f "$left" "$right"' EXIT
for file in "$left" "$right"; do
wget -q -O "$file" "$url"
done
if diff "$left" "$right" > /dev/null 2>&1; then
echo "Changes detected in successive retrievals of '$url'."
fi
Аналогичный режим можно использовать для постепенной записи изменений с течением времени:
left=$(mktemp)
right=$(mktemp)
url="http://url.example.com/"
trap 'rm -f "$left" "$right"' EXIT
# Establish the "baseline":
wget -q -O "$left" "$url"
# Okay, now check for updates forever:
while sleep 30; do
wget -q -O "$right" "$url"
if diff "$left" "$right" > /dev/null 2>&1; then
echo "$(date) - Changes detected in '$url'."
cp "$right" "$left"
fi
done
Самый простой способ обнаружить различия между двумя файлами, какими бы незначительными они ни были, — это сравнить их контрольные суммы. Чтобы продемонстрировать здесь, я просто использовал команду «md5sum» для генерации хэша md5 для каждого запроса.
#!/bin/bash
wget -q website.com -O site.txt
baseline=$(md5sum site.txt)
echo first request checksum: $baseline
rm site.txt
wget -q website.com -O site.txt
change=$(md5sum site.txt)
echo second request checksum: $change
rm site.txt
Результатом этого скрипта будет хэш md5 для каждого запроса, и вы очень легко сможете увидеть, одинаковы ли хэши или разные.