
|
[バックナンバーのトップへ] [Linux システム管理のトップへ] いますぐ実践! Linux システム管理 / Vol.071 / 読者数:884名こんばんは、うすだです。 今週は、突然、別のプロジェクトのお手伝いをすることになり、 東京にてお手伝い作業をしております。(もうお手伝いの域を越えていますが…) 土日は名古屋に戻れるかと思っていたのですが、 ものすごいあやうい状況になってきて、帰るわけにもいかず、 ホテルと会社の間を往復するだけの日々が続いています。 会社に属する限り、仕方がないと言えば仕方がないですし、 途中でほうり出すのも人間として間違っていると思いますので、 もうちょっとがんばりたいと思います。 それはともかく、ひさびさに東京へ来て思ったのは、こんなことでした。
…田舎もんのひとりごとみたいですね。というかそのものです。 おつかれ気味ですが、負けずに、今週も、はりきってまいりましょう! 今週のお題 - メールサーバを監視する / デッドマンズ・チェスト先週、メールサーバを監視する方法を、ご紹介しました。
Vol.070 - メールサーバを監視する メールサーバに SMTP でアクセスして動作確認を行い、 おかしかった場合にメールで通知する、という方法をご紹介しました。 しかしよく考えたら、監視を行っているマシンのメールサーバと、 実際にその環境で使用しているメールサーバが同じだったら、 メールが届かなくなってしまいます。 では、別のメールサーバに、 直接メールの送信をお願いしてしまえばよいのではないでしょうか。 というわけで、先週の続きです。 別のメールサーバに直接お願いする、ということは、 SMTP で直接アクセスするということです。 あ、じゃあ、先週ご紹介した、smtpcheck.pl がそのまま使えそうです。 smtpcheck.pl は、メールサーバと、 宛先および送信元のメールアドレスを引数に指定すると、 そのメールサーバに対して、SMTP を使って、 test と書かれた味もそっけもないメールを送信します。 % /usr/local/sbin/smtpcheck.pl smtp_server test usu@usupi.org \ || echo NG 上記のように実行すると、smtp_server に対して、test 宛にメールを送信します。 失敗すると 0 以外の値を返すため、NG と出力されます。 それでは、以下のようにしてみると、どうでしょうか。 % /usr/local/sbin/smtpcheck.pl bad_server test usu@usupi.org \ || /usr/local/sbin/smtpcheck.pl good_server root usu@usupi.org bad_server がおかしくなっていたら、good_server 経由で、 test という内容のそっけないメールが、root に送信されるようになります。
しかし、いくらなんでも、test では困りますよね。
#!/usr/bin/perl
use Net::SMTP;
use strict;
# (1)引数チェック
if($#ARGV != 3) {
print STDERR "Usage: $0 smtpserver to_addr from_addr subject\n";
exit 1;
}
# (2)第1引数=サーバ, 第2引数=宛先, 第3引数=送信元, 第4引数=題名
my $host = shift;
my $addr = shift;
my $from = shift;
my $subj = shift; # (5)サブジェクト
# (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\nSubject: $subj\n\n")) {
&err_exit($smtp, "DATA failed.", 6);
}
while(<>) { # (6)標準入力をそのまま本文に
if(!$smtp->datasend($_)) {
&err_exit($smtp, "DATA failed.", 6);
}
}
if(!$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;
}
長くてすみません。
(1)〜(4) の大枠の流れは、基本的に同じです。 ですので、先ほどの実行を、以下のように変えれば、 ちゃんとした警告のメールが送られるようになります。
% echo test | smtpcheck.pl bad_server test usu@usupi.org "" \
|| (echo "bad_server is bad" | \
smtpcheck.pl good_server root usu@usupi.org Alert)
以上、メールサーバを監視する方法…の続きを、ご紹介しました。
トラブルには、さまざまなものがあると思います。 …というのは、今の自分に言い聞かせたい言葉でした。 宿題の答え先週の宿題は、 今週のスクリプトを使ってメールサーバを監視しますが、メールサーバ がおかしいとき、エラーメッセージをメールで通知してください。 でした。
前回と同様、標準エラー出力を一旦ファイルに記録しておいて、異常終了時に、
記録しておいたファイルの内容を、メールで送信すればいいですね。
#!/bin/sh
TMPFILE=/tmp/smtpcheck-$$
trap "rm -f $TMPFILE" 0 1 2 3 9 11 15
LANG=C
export LANG
if [ $# -ne 5 ]; then
echo "Usage: $0 check_serv check_to failsafe_serv alert_to from"
exit 1
fi
CHECK_SERV=$1
CHECK_TO=$2
OK_SERV=$3
SEND_TO=$4
FROM=$5
SUBJECT="[Alert] $CHECK_SERV"
echo test | smtpcheck.pl $CHECK_SERV $CHECK_TO $FROM test > \
$TMPFILE 2>&1
if [ $? -ne 0 ]; then
cat $TMPFILE | smtpcheck.pl $OK_SERV $SEND_TO $FROM "$SUBJECT"
fi
基本的には前回の宿題と同様ですので、説明は割愛させていただきます。 今週の宿題今週の宿題は、 インターネットでのメールの配送方法を調べましょう。 です。
ようは、DNS のなにを引いて、誰に送るか、というあたりのことです。 あとがきというわけで、フル回転で作業をしてますが、 インストールスクリプトを作成して試している最中、 思わぬ罠に引っかかってしまいました。
なんと、サーバの /bin が、まるっとごっそり消えてしまったのです。 同じ OS の別のマシンに HDD をつなぎ、/bin をコピーすることで、 復旧はできたのですが、原因がわかりません。 とはいえ、また /bin が消えてはいけませんので、 また同じことになっても復旧できるよう、以下を実行しておきました。 # cd / # tar cf some/where/bin-all.tar bin # cp -p bin/tar some/where/ つまり、もし /bin がなくなっても、以下のようにすれば、 最悪の自体を避けることができます。 # cd / # ./some/where/tar xfp some/where/bin-all.tar
それはさておき、びくびくしながら作業をしているうちに、
原因を見つけることができました。
uninstall:
@rm -rf $(PREFIX_BIN)/bin
一見、なんの問題もないように見えますが、 もし $(PREFIX_BIN) が定義されていないと… うあああ、ということでした。
みなさんも、rm を使うときには、十分注意しましょう。
という状況ですので、申し訳ありませんが、来週はお休みをいただきたいと思います。
今週も、ここまで読んでいただき、ありがとうございました。
「いますぐ実践! 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の創りかた」 渡波 郁 「非常識な成功法則」 神田 昌典 …これ以前は記録してません…
▼ 気に入ってる本
| ||||||||||||||||||||||||||||||||||||||||