텍스트 파일에서 웹 페이지 목록을 읽는 Bash 스크립트

텍스트 파일에서 웹 페이지 목록을 읽는 Bash 스크립트

웹페이지 목록을 읽고 그 중 일부가 업데이트되었는지 확인하고 싶습니다. wget이나 컬을 사용하는 것이 더 낫습니까? 어떻게 해야 합니까?

웹페이지 목록은 간단한 텍스트 파일로 되어 있습니다. 웹페이지의 내용이 동일하면 아무것도 인쇄되지 않습니다. 스크립트가 마지막으로 실행된 이후 내용이 변경된 경우 웹 페이지 주소를 입력(stdout)합니다.

답변1

#!/bin/sh

i=1
while IFS= read -r url; do
    file="data-$i.out"

    curl -o "$file.new" "$url"

    if ! cmp -s "$file" "$file.new"
    then
        printf '%s\n' "$url"
    fi

    mv -f "$file.new" "$file"

    i=$(( i + 1 ))
done <url-list.txt

url-list.txt그러면 URL을 한 줄씩 읽고 각 URL을 가져오는 데 사용하여 정수(파일의 URL 시퀀스 번호)라는 이름 curl의 파일에 출력을 저장합니다 .data-N.out.newN

이전 파일이 없거나 data-N.out파일이 다른 경우 data-N.out.newURL이 표준 출력으로 인쇄됩니다.

그런 다음 스크립트를 다시 실행하면 획득한 데이터 파일의 이름이 변경됩니다.

스크립트를 처음 실행하면 이전에 본 적이 없는 모든 URL이 출력됩니다.

URL을 재정렬하거나 상단에 새 URL을 추가하면 해당 데이터 파일의 내용이 변경되었기 때문에 URL이 변경된 것으로 표시됩니다. 대신 출력 파일 이름의 일부로 base64로 인코딩된 URL을 사용하여 이를 수행할 수 있습니다 $i.

웹 클라이언트를 사용하는지 curl아니면 다른 클라이언트를 사용하는지 그 자체로는 중요하지 않습니다.wget

관련 정보