웹사이트 모니터링

웹사이트 모니터링

내가 달성하려는 것은 웹사이트에서 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

답변1

일을 너무 복잡하게 만드세요.

#!/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

답변2

두 파일 간의 차이를 감지하는 가장 쉬운 방법(변경 사항이 아무리 작더라도)은 체크섬을 비교하는 것입니다. 여기서 설명하기 위해 "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 해시가 되며 해시가 동일한지 다른지 쉽게 확인할 수 있습니다.

관련 정보