テキストファイルからWebページのリストを読み取るBashスクリプト

テキストファイルからWebページのリストを読み取るBashスクリプト

Webページのリストを読んで、その一部が更新されていることを確認したいと思います。 wgetやカールを使用する方が良いですか?どうすればいいですか?

Webページのリストは簡単なテキストファイルになっています。 Webページの内容が同じであれば何も印刷されません。スクリプトが最後に実行されてから内容が変更された場合は、Webページのアドレスを入力(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を1行ずつ読み、各URLを取得するために使用して、整数(ファイルのURLシーケンス番号)という名前curlのファイルに出力を保存します。data-N.out.newN

古いファイルが存在しないdata-N.out場合、またはファイルが異なる場合、data-N.out.newURLは標準出力として印刷されます。

その後、スクリプトを再実行すると、取得したデータファイルの名前が変更されます。

スクリプトを初めて実行すると、以前に見たことのないすべてのURLが出力されます。

URLを並べ替えるか、上部に新しいURLを追加すると、そのデータファイルの内容が変更されたため、URLが変更されたとマークされます。代わりに、出力ファイル名の一部としてbase64でエンコードされたURLを使用してこれを実行できます$i

Web クライアントを使用するのか、curlそれとも別のクライアントを使用しているのか、それ自体は重要ではありません。wget

関連情報