技術担当の @yeaah_masa です。今回もノウハウ共有系です。
Webサービスを開発していると複数サイトに頻繁にアクセスする必要がありますが、そのURLが有効か無効かをまとめて確認したいケースって結構ありますよね。
有償のサービスもたくさん存在しているし、無償のものもあるにはあるがチェック数の上限が決まっていたりで思ってたよりなかなか気軽に行えませんでした。
時は2023年。
そういえばchatGPTなるものがあるではないか!ということで教えてもらいながら作るとあっという間に完成しました。ということで同じような考えの方がいればと思い共有いたします。
※シェルも得意ではないのでそんなの知ってるという方は華麗にスルーください
環境
- macOS: Ventura 13.4.1
- Chip: Apple M1
ソースコード
さっそくですがソースコードから。
以下を「url-checker.sh」のようなファイル名で保存します。
urlsには適宜チェック対象のURLを入れてください。
#!/bin/bash
# URLリストを配列に格納する ↓以下は適当なURLなのでココを変えること!
urls=("https://www.google.com/" "https://www.yahoo.co.jp/")
# URLリストをループで処理する
for url in "${urls[@]}"
do
# curlを使用してステータスコードを取得する
status_code=$(curl --max-time 5 -s -o /dev/null -w "%{http_code}" $url)
# URLとステータスコードを出力する(カンマ区切り)
echo "$url,$status_code"
done
使用手順
1. コマンド実行
ターミナル.appを起動し、以下のコマンドを実行
sudo bash url-checker.sh > results.csv
簡単なのでわかると思いますが実行して結果をresults.csvに出力しているだけです。
2. 出力結果を確認
results.csvを開くと以下のようになっています。
ざっと言えば200はOK、それ以外はNGという感じです。スプレッドシートに読み込ませるなど後は煮るなり焼くなりしてください。
"https://www.google.com/",200
"https://www.yahoo.co.jp/",200
…
以上です、簡単ですね!
まとめ
実はツールを使ったりスプレッドシートでスクリプトを組んで実行したりしてたのですが、時間がかかるのとタイムアウトが頻発したりで、チェック数が少ない場合以外はあまり実用的ではありませんでした。
今回のシェルスクリプトはローカル環境での実行なのでもちろん通信環境依存ですが比較的早く多くのURLをチェックできると思います。
またWindows環境の方はPythonでスクリプト組むと良いかもしれません。
今回は以上です、お役に立てば幸いです!