Monitoramento do site

0

O objetivo que estou tentando realizar é extrair o código HTML de um site, gravá-lo em um arquivo. Uma vez feito isso, quero fazer um loop para fazê-lo novamente e gravá-lo em outro arquivo. Depois que o segundo arquivo for escrito, quero comparar os dois arquivos para ver se alguma coisa mudou. Aqui está o que eu tenho até agora e não funciona:

#!/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
    
por Tweak 02.05.2017 / 22:41

2 respostas

1

Maneira de complicar as coisas.

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

Um regime semelhante poderia ser usado para observar alterações de forma incremental ao longo do tempo:

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
    
por 02.05.2017 / 22:45
0

A maneira mais fácil de detectar uma diferença entre dois arquivos, independentemente de quão pequena seja a alteração, é comparar suas somas de verificação. Para demonstrar aqui, usei apenas o comando "md5sum" para gerar o hash md5 de cada solicitação.

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

A saída desse script será o hash md5 de cada solicitação e você poderá ver se os hashes são iguais ou diferentes.

    
por 04.05.2017 / 17:59