次のURLのリストを含むテキストファイルがあります。
http://somesite.com/some-article/
https://anothersite.fr/somepage.php?page=something
私が望むのは、どのURLがHTTPコード200(OK)を返すかを確認し、それを別のファイルのリストに入れることです。
これを行うために端末をどのように使用できますか?カール?
答え1
以下を使ってこれを行います。強く打つ:
while read url ; do
ret=$(curl -I -s "$url" -o /dev/null -w "%{http_code}\n")
((ret==200)) && echo "$url" >> new_list_URL
done < list_URL
またはPOSIXモード:
while read url ; do
ret=$(curl -I -s "$url" -o /dev/null -w "%{http_code}\n")
[ $ret -eq 200 ] && echo "$url" >> new_list_URL
done < list_URL
確認する男の巻き
答え2
答え3
おそらく最善の方法ではないかもしれませんが、次のシェルスクリプトを理解するのは簡単です。
while read i
do
wget --spider $i > /dev/null 2>1
if [ $? == 0 ]
then
echo $i >> validlist.txt
fi
done
このシェルスクリプトを実行します./wget_check.sh < urllist.txt
。ここで、はwget_check.sh
スクリプト名、urllist.txtはURLを含むテキストファイルです。
スクリプトはデフォルトでリスト内のすべてのURLに対して実行されwget --spider
、URLが有効な200 OK応答を返すと、そのURLが別のファイル "validlist.txt"に追加されます。
この
--spider
オプションはURLを「クロール」し、ファイルをダウンロードしません。出力は/ dev / nullにリダイレクトされるため、出力は生成されません。
値が得られなかった場合、それぞれは
wget
ゼロ以外の戻り値を返します。200 OK response