LINEで送る
Pocket

あけましておめでとうございます!!

Adachinです。

今年初のブログです!

(⌍་д་⌌)「二週間何してたの??」

書く時間がありませんでした(言い訳乙)

というわけで、今回はシェルスクリプトのお話。

目的としてはリモート先のファイルを毎時確認したいからどうすればいいか作ってみた。

 


■流れ

①if,else文でファイルがない場合はslackとメールに飛ばす

②ある場合は特に何もしない

とりあえず、リモート先のファイルを確認ってどうやるのか本などで調べてみた。


■if文

-f 関数がリモートでエラー吐きまくったのでこんなかんじにしてみた。
[ ]の内側は必ず半角スペースを入れることに注意しましょう。


■例文

例えばlsyncdでコンテンツファイルを各サーバに同期させる場合、
ちゃんと同期しているのかを確認するスクリプトを紹介します(・∀・)

というわけでこんな感じで作ってみました。

#!/bin/bash
#変数(testファイル/一時間前のtestファイル)
TEST=/hoge/test.txt.`date "+%Y%m%d-%H%M"`
TESTRM=/hoge
#一日前のtestファイルを削除
ssh -q adachin@lsyncd sudo -u adachin find $TESTRM -mtime +0 -exec rm -f {} \;
echo `date "+%Y-%m-%d %T"`
#testファイルをtouch
ssh -q adachin@lsyncd sudo -u adachin touch $TEST
sleep 10s
#for文でserver1~20までtestファイルがあるのか確認
for x in `seq 1 20`; do
echo "server$x"
if [[ `ssh adachin@server$x "ls $TEST"` != "$TEST" ]]; then
echo "Not a test file!"
#slackとメールに飛ばす
echo Not a test file | ./webhooks.sh
echo "server$x not a touch file" | mail -s "server$x not touch file" adachin@adachin.com
else
echo "test file OK"
fi
done
#cronで毎時15分に確認
15 * * * * check_touch.sh

view raw
check-file.sh
hosted with ❤ by GitHub


■まとめ

自動化した時の快感は半端無かった・・・
他にやり方などあったらコメントお願いします!!!
来週からAWSでサーバ構築をするのでそこらへんもあとでブログします。

参考本:http://goo.gl/trhRYJ

LINEで送る
Pocket

カテゴリー: Blogshell script

adachin

1989年生まれのLancers SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、AnsibleやTerraformでのインフラコード化を推進。副業では数社サーバー保守、未経験によるエンジニアのメンターなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、グループ会社のインフラをECS/Fargateへ移行、CakePHP4での管理画面作成、メンター、分析基盤の運用を担当している。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください