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.new
N
古いファイルが存在しないdata-N.out
場合、またはファイルが異なる場合、data-N.out.new
URLは標準出力として印刷されます。
その後、スクリプトを再実行すると、取得したデータファイルの名前が変更されます。
スクリプトを初めて実行すると、以前に見たことのないすべてのURLが出力されます。
URLを並べ替えるか、上部に新しいURLを追加すると、そのデータファイルの内容が変更されたため、URLが変更されたとマークされます。代わりに、出力ファイル名の一部としてbase64でエンコードされたURLを使用してこれを実行できます$i
。
Web クライアントを使用するのか、curl
それとも別のクライアントを使用しているのか、それ自体は重要ではありません。wget