概要
標準入力から受け取った文字列を、初回だけその場で任意のメールアドレスで送信して、その後はファイルに保存し任意のタイミングにまとめてメールで送信する。
exim4を設定済み前提
引数:command::address,interval(s)
mayday.sh
#!/bin/bash
current=$(date "+%s") #現在時刻
if [ -f ./pan ]
then
timer=$(($(head -n 1 ./pan)+$2)) #先頭のタイムスタンプ取得
if [ $timer -lt $current ]
then
dat=`cat pan`
echo "$current" > pan #タイムスタンプで上書きする
echo "$dat" | mail $1 #$datは改行を維持するためダブルクオーテーションで囲う
else
cat - >> pan #標準入力をファイルに追記
fi
else
cat - | mail $1
echo "$current" > pan #新しいファイルpanの先頭に現在のタイムスタンプを書き込む
fi
使用例
CPU温度警告をGmailで送るやつなんかのmailコマンドをこれに変える
$ ./mayday "example@gmail.com" 120
うまくいくとこうなる
補足
警告をチェックしたらpanファイルを消して下さい。
mayday-resetとか作っとくと良いです。
おわり。
↧