Bash
Linux
CentOS

任意の文字列がwebサイト上に存在するかをURLリストを用いて判定するシェルスクリプト

自分用。調べてもそれっぽいものが見つからなかったので、自作してみた。
もっと良い作り方が絶対あると思います。

コード

テキストエディタで以下のコードを「source_check.sh」とか適当に名前をつけて保存。
改行コードはLFにするように。

source_check.sh
#!/bin/bash
# $1 urls.txt
# $2 'keyword'

filename='output.txt'

touch $filename
cp /dev/null $filename

for i in $(cat $1);
do
    command=`curl -s $i | grep -c "$2"`;
    echo "$i,$command" >> $filename;
done;

使い方

事前に以下のようなURLが羅列されたリストを用意しておきます。ファイル名は「urls.txt」とか適当に。
改行コードはLFにするように。

urls.txt
https://www.google.co.jp
https://www.yahoo.co.jp
https://www.microsoft.com

シェルスクリプトと同じところにURLリストファイルも置いておきます。
後は、シェルスクリプトに実行権限を付与して実行

chmod u+x ./script.sh
./source_check.sh url.txt '調べたいキーワード'

第一引数は参照したいURLリストのファイル名
第二引数は調べたいキーワードをシングルクオーテーションで囲んだ文字列です

結果

シェルスクリプトと同じところに「output.txt」という名前で、調べたURLと、キーワードの出現回数を出力します。

スクリプトをもう一度実行したら、「output.txt」の中身を空にして、再出力します。

おまけ

ちなみにテスト環境とか、BASIC認証を求められる環境でもシェルスクリプトの中身を次のように変更すれば実行可能です。

source_check_test.sh
#!/bin/bash
# $1 urls.txt
# $2 'keyword'

filename='output.txt'

touch $filename
cp /dev/null $filename

for i in $(cat $1);
do
    command=`curl -u username:password -s $i | grep -c "$2"`;
    echo "$i,$command" >> $filename;
done;