Скрипт, чтобы проверить, изменилась ли веб-страница - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть задание, и я должен прочитать список веб-сайтов из текстового файла (sites.txt) и проверить, нет ли на каких-либо из них статических изменений с момента последнего запуска сценария.Мой ввод

https://en.wikipedia.org/wiki/Stack_Overflow
https://en.wikipedia.org/wiki/Linux
https://en.wikipedia.org/wiki/Linus_Torvalds

Если какой-либо из веб-сайтов не работает, он должен напечатать на stderr имя адреса и сообщение FAILED, как в этом примере вывода.

https://en.wikipedia.org/wiki/Stack_Overflow FAILED

Также, есливходной текстовый файл содержит #, он должен игнорировать строку как комментарий.Моя попытка состояла в том, чтобы создать 2 html-файла old.html и new.html и проверить оператор if, если вычитание html-файлов отличается от 0. Моя проблема в том, что мои выходные данные странно отличаются от того, что я ожидал, и что команда curlвсегда предполагает, что сайты не работают.У меня есть вывод:

 FAILED/en.wikipedia.org/wiki/Stack_Overflow
 FAILED/en.wikipedia.org/wiki/Linux
https://en.wikipedia.org/wiki/Linus_Torvalds FAILED

Вот мой код:

#!/bin/bash

while read line || [ -n "$line" ]; do
    [[ "$line" = "\#*" ]] && continue
    if [ "$(curl -s --head  --request GET "$line" | grep "200 OK" > /dev/null)" ]; then
        mv new.html old.html 2> /dev/null
        curl "$line" -L --compressed -s > new.html 
        DIFF_OUTPUT="$(diff new.html old.html)"
        if [ "0" != "${#DIFF_OUTPUT}" ]; then
            echo "$line Changed"
        fi  
    else
        echo "$line FAILED" >&2
    fi
done <"$1"

Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 10 декабря 2018

sites.txt имеет окончания строки DOS \r\n, а не окончания строки UNIX \n.При возврате каретки \r курсор возвращается к первому столбцу.Вам необходимо либо преобразовать sites.txt в формат UNIX , либо удалить возврат каретки из $line.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...