
|
[バックナンバーのトップへ] [Linux システム管理のトップへ] いますぐ実践! Linux システム管理 / Vol.070 / 読者数:876名こんばんは、うすだです。
今日は、四日市の花火をみてきました。
ひさびさにみて思ったのですが、花火って、不思議ですよね。
それから、視覚だけでなく、
聴覚(爆発(?)する音)や嗅覚(火薬の匂い)も楽しめるということに、
今日は気づきました。
そんなわけで、いろいろ楽しかったのですが、帰りは渋滞で大変でした。 ちょっとげんなりしてますが、今週も、はりきってまいりましょう! 今週のお題 - メールサーバを監視するというわけで、安直なテーマを選んでしまいました。 …あ、いや、でも、ほら、メールが届かなくなると、 困るひとがいっぱいいるわけですよね。 休み中だったから気づかなかったとか、外出して直帰したから知らないとか、 システム管理者は、そんな苦しい言い訳をしても聞いてもらえないわけですよ。
異常を即座に関知し、早急に修正する。 というわけで、今週は、メールサーバを監視する方法を、ご紹介します。 安直に、以下のように、Mail コマンドで確認する方法も、 ありといえばありだと思います。 % echo test | /usr/bin/Mail -s test usu@usupi.org usu@usupi.org に、test というメールが届けば大丈夫、という方法です。
しかし、複数のメールサーバで分散していると、どれかがとち狂っていても、
とち狂っているメールサーバを回避してうまく届いてしまう、
ということが考えられます。 ですので、今回は、メールサーバに直接 SMTP で接続して、 メールを送信することで、メールサーバを監視したいと思います。
しかしながら、今度ばかりは都合のいいコマンドが見当たりません。
うまい具合に、Perl には Net::SMTP というモジュールが存在しましたので、
これを使って、実現してみようと思います。
というわけで、やや試行錯誤して作ったスクリプトが、以下です。
#!/usr/bin/perl
use Net::SMTP;
use strict;
# (1)引数チェック
if($#ARGV != 2) {
print STDERR "Usage: $0 smtpserver to_addr from_addr\n";
exit 1;
}
# (2)第1引数=メールサーバ, 第2引数=宛先, 第3引数=送信元アドレス
my $host = shift;
my $addr = shift;
my $from = shift;
# (3)接続して、送信元と宛先とメールの内容を伝える
my $smtp = Net::SMTP->new($host);
if(!$smtp) {
&err_exit($smtp, "cannot connect to $host.", 2);
}
if(!$smtp->mail($from)) {
&err_exit($smtp, "$from: MAIL FROM failed.", 3);
}
if(!$smtp->to($addr)) {
&err_exit($smtp, "$addr: RCPT TO failed.", 4);
}
if(!$smtp->data()) {
&err_exit($smtp, "DATA failed.", 5);
}
if(!$smtp->datasend("From: $from\nTo: $addr\n\ntest") ||
!$smtp->dataend()) {
&err_exit($smtp, "DATA failed.", 6);
}
$smtp->quit;
0;
# (4)失敗したときの後処理
sub err_exit {
my ($smtp, $msg, $stat) = @_;
print STDERR "$msg\n";
$smtp->quit if $smtp;
exit $stat;
}
大雑把に内容を説明しますと…
(3) の一連の処理は、SMTP をご存知のかたなら、
なんとなくああこれをやってるんだな、と推測できると思います。
Vol.020 - telnet でメールのチェックをする
さて、このスクリプトを、たとえば、 /usr/local/sbin/smtpcheck.pl という名前で保存して、実行権をつけたら、 以下のように実行します。 % /usr/local/sbin/smtpcheck.pl smtp.usupi.org usu@usupi.org \ usu@usupi.org
smtp.usupi.org が正常に動作していれば、
usu@usupi.org に test とだけ書かれた無愛想なメールが届きます。 これを、先週と同様に、失敗したらメールするようにしてみます。 % /usr/local/sbin/smtpcheck.pl smtp.usupi.org usu@usupi.org \ usu@usupi.org || \ (echo mail server is wrong | /usr/bin/Mail -s 'Alert' root)
これを実行すると、smtp.usupi.org がとち狂っていて、
usu@usupi.org にメールが出せないとき、root 宛にメールが届きます。
あとは、これを cron で定期的に実行すれば、
メールサーバの監視を行うことができると思います。
…それはちょっとうっとおしいですよね。
確認のメールは読む必要がないと思いますので、捨ててしまいます。
ここでは、そのアドレスを check という名前にしたいと思います。 check: /dev/null
追加したら、newaliases コマンドを実行します。 あとは、確認メールの送り先を check に変えれば、完成です。 % /usr/local/sbin/smtpcheck.pl smtp.usupi.org check@usupi.org \ usu@usupi.org || \ (echo mail server is wrong | /usr/bin/Mail -s 'Alert' root) 以上、メールサーバを監視する方法について、ご紹介しました。
しかし、まだ問題が残っています。
さてどうしましょう…? 宿題の答え先週の宿題は、 Anonymous FTP サーバを監視してください。 でした。
先週のお題と同様、wget コマンドでできます。 % wget -q -O /dev/null ftp://ftpserver/pub/keepalive.txt || \ (echo ftpd is down. | /usr/bin/Mail -s '[ftpd] Alert' root)
…これだけだとあまりにもアレですので、
wget のエラーメッセージを送信するようにしてみましょう。
#!/bin/sh
TMPFILE=/tmp/ftpcheck-$$
trap "rm -f $TMPFILE" 0 1 2 3 9 11 15
LANG=C
export LANG
if [ $# -ne 2 ]; then
echo "Usage: $0 url address"
exit 1
fi
URL=$1
MAIL=$2
/usr/bin/wget -O /dev/null $URL > $TMPFILE 2>&1
if [ $? -ne 0 ]; then
/usr/bin/Mail -s '[wget] Alert' $MAIL < $TMPFILE
fi
最初は、使用する一時ファイル(TMPFILE)と、
シグナルを受信したときに一時ファイルを消すための呪文(trap)、
環境変数 LANG の設定です。 あとは、出力を一時ファイルにリダイレクトしつつ wget コマンドを実行して、 wget の終了ステータス($?)が 0 でなければ、一時ファイルの内容をメールします。 このシェルスクリプトを、 たとえば /usr/local/sbin/wgetchk.sh という名前で保存し、実行権をつけたら、 % /usr/local/sbin/wgetchk.sh http://www.usupi.org/sysad/ root とか、 % /usr/local/sbin/wgetchk.sh ftp://ftpserver/keepalive.txt root
という具合に実行してください。 今週の宿題今週の宿題は、 今週のスクリプトを使ってメールサーバを監視しますが、メールサーバ がおかしいとき、エラーメッセージをメールで通知してください。 です。
今週のお題では、メールサーバがおかしいときにメールで通知しますが、
メッセージはいつも同じなので、なにがおかしいかがわかりません。 あとがき先週くらいまで、「ハッカーと画家」を読んでいたのですが、その中に、 ベンチャー企業は、2つの選択肢があったら、技術的に難しいほうを選べばいい、 というような記述がありました。 技術的に難しければ難しいほど、同じ土俵にいる企業がいない (特に大企業は難しいほうを選べない)ため、有利になる、ということだそうです。
そして、人生においても、同じことが言えるとあります。
言われてみればその通り、と言えそうですが、恥ずかしながらわたしは、
この本を読むまで気がつきませんでした。
そして興味深いことに、岡本太郎も、同じようなことを言っていました。 テンションとかニュアンスが違いますが、結果的に、 アメリカの技術屋と日本の芸術家が、同じことを主張しているのが、 面白いと思いました。 あ、いずれも、わたしのいい加減な要約ですので、詳しくは、 以下の本を読んでください。どちらも面白いので、読んで損はしないと思います。
ハッカーと画家
自分の中に毒を持て
今週も、ここまで読んでいただき、ありがとうございました。
「いますぐ実践! Linux システム管理」の解除は、以下からできます。
バックナンバーは、こちらにほぼ全部そろっています。
「栗日記」−この時期アクセスが少ない…だからみてください。 |
▼ トップ ▼ プロフィール ▼ リンク
▼ 作ってみました
▼ せんでん
▼ 最近読んだ本 [X]
「センネン画報」 今日 マチ子「粟津潔 デザインする言葉」 粟津潔 「Binary Hacks」 高林 哲,鵜飼 文敏,佐藤 祐介,浜地 慎一郎,首藤 一幸 「Make: Volume01」 オライリー・ジャパン 「セーラが町にやってきた」 清野 由実 「手紙屋」 喜多川 泰 「Linuxカーネル2.6解読室」 高橋 浩和,小田 逸郎,山幡 為佐久 「人蕩し術」 無能 唱元 「子育てハッピーアドバイス2」 明橋 大二, 太田 知子 「ラッセル幸福論」 B. Russell 「それでも人生にイエスと言う」 Viktor Emil Frankl 「子育てハッピーアドバイス」 明橋 大二, 太田 知子 「考具」 加藤 昌治 「北欧デザイン<3>」 渡部 千春 「北斎の謎を解く」 諏訪 春雄 「体感美術館」 平野 暁臣 「チベット永遠の書」 Theodore Illion 「リナックスの革命」 Pekka Himanen 「人月の神話」 Frederick Phillips,Jr. Brooks 「ヤバい経済学」 Steven D. Levitt, Stephen J. Dubner 「小布施ッション<2001-2002>」 セーラ・マリ カミングス 「アンパンマン伝説」 やなせ たかし 「夢をかなえるゾウ」 水野 敬也 「ゲーム開発者のためのAI入門」 David M. Bourg, Glenn Seemann 「北欧デザイン<2>」 渡部 千春 「北欧デザイン<1>」 渡部 千春 「ヒューマン2.0」 渡辺 千賀 「中国・ロシア同盟がアメリカを滅ぼす日」 北野 幸伯 「超ロング・セラー 絶滅寸前商品」 湯浅 豊彦 「The BUG(ザ・バグ)」 すずき ひろのぶ,かとう みつあき 「デザインのデザイン」 原 研哉 「マキアヴェッリ語録」 塩野 七生 「ハンバーガーを待つ3分間の値段」 斎藤 由多加 「星の旅人-スペイン「奥の細道」-」 黛 まどか 「食品の裏側」 安部 司 「On Lisp」 Paul Graham 「ぼくが医者をやめた理由 つづき」 永井 明 「あなたならどうする?」 Jack Nikolaschka 「セキュアプログラミング−失敗から学ぶ設計・実装・運用・管理」 Mark G. Graff, Kenneth R. van Wyk 「「左利き」は天才?−利き手をめぐる脳と進化の謎」 David Wolman 「自分の中に毒を持て」 岡本 太郎 「アトピーの薬を減らす本」 田中 貴子 「岡本太郎「明日の神話」修復960日間の記録」 吉村 絵美留 「X51.ORG THE ODYSSEY」 佐藤 健寿 「アレルギーっ子の暮らし応援BOOK」 佐藤 のり子 「沖縄文化論」 岡本 太郎 「「伝説の社員」になれ!」 土井 英司 「コンピュータの構成と設計(上)」 Patterson & Hennessy 「カラスのジョンソン」 明川 哲也 「ドリルを売るには穴を売れ」 佐藤 義典 「頭がよくなる照明術」 結城 未来 「クロフォードのインタラクティブデザイン論」 Chris Crawford 「いじめの根を絶ち子どもを守るガイド」 Barbara Coloroso 「非常識のすすめ―逆発想の仏教論」 ひろさちや 「Linuxアドバンストネットワーク構築ガイド - HAサーバ構築編」 デージーネット 「イノベーションの達人!」 Tom Kelly, Jonathan Littman 「クリエーター50人が語る創造の原点」 小原 啓渡 「欺術 - 史上最強のハッカーが明かす禁断の技法」 Kevin Mitnick 「楽しい気象観察図鑑」 武田 康男 「入門 Ajax」 高橋 登史朗 「リリカルな自画像」 岡本 太郎 「やぎの目ゴールデンベスト」 林 雄司 「初めてのPython 第2版」 Mark Lutz,David Ascher 「鼻兎」 小林 賢太郎 「なぜ、これがアートなの?」 Amelia Arenas 「芸術起業論」 村上 隆 「まほう色の瞳」 Enrique Barrios 「ラーメンズつくるひとデコ」 ラーメンズ 「R25 つきぬけた男たち」 R25編集部 「美の呪力」 岡本 太郎 「しろのあお」 上大岡 トメ 「ザ・ゴール」 Eliyahu M. Goldratt 「ハッカーと画家」 Paul Graham 「岡本太郎に乾杯」 岡本 敏子 「Fedore Core Expert」 Software Design 「誰も知らない男」 ブルース・バートン 「子どもが育つ魔法の言葉」 ドロシー・ロー・ノルト 「国家の罠」 佐藤 優 「夜回り先生」 水谷 修 「やぎの目絵日記」 林 雄司 「7つの習慣」 スティーブン・R. コヴィー 「まろ、ん?−大掴源氏物語」 小泉 吉宏 「ザ・サーチ グーグルが世界を変えた」 ジョン・バッテル 「ポストモダン・マーケティング」 スティーブン ブラウン 「機動戦士ガンダムさん」 大和田 秀樹 「小エロのひみつ - Webやぎの目研究発表」 林 雄司 「これ、誰がデザインしたの?」 渡部千春 「60分間・企業ダントツ化プロジェクト」 神田 昌典 「ガルシアへの手紙」 エルバート ハバード 「人生は素晴らしいものだ」 オグ・マンディーノ 「ザ・マインドマップ」 トニー・ブザン,バリー・ブザン 「ワインバーグのシステム思考法」 G.M.ワインバーグ 「渋谷ではたらく社長の告白」 藤田 晋 「渋井真帆の日経新聞読みこなし隊」 渋井 真帆 「コラム息切れ」 小野 法師丸 「早朝起業」 松山 真之介 「変な人が書いた驚くほどツイてる話」 斎藤 一人 「35歳から仕事で大切にしたいこと」 村井 勉 「金融広告を読め」 吉本 佳生 「発想する会社!」 トム・ケリー,ジョナサン・リットマン 「エハイク」 吉田 戦車 「人生の旋律」 神田 昌典 「仕事の思想」 田坂 広志 「CPUの創りかた」 渡波 郁 「非常識な成功法則」 神田 昌典 …これ以前は記録してません…
▼ 気に入ってる本
| ||||||||||||||||||||||||||||||||||||||||