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

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


カテゴリー: Blogshell script

adachin

1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

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