いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.011 / 読者数:294名

こんばんは,うすだです.

GW 後の1週間は,いかがでしたでしょうか.
ひとの話を読んだり聞いたりして,ふと思ったのですが,この1週間は,

1. GW でリフレッシュできたので,ばりばりがんばれた.
2. GW でまったりしていたため,仕事モードに切替えるのに苦労した.

の2つに分かれるのではないか,という気がしています.

わたしは…意外にも,1 の方でした.
GW はリフレッシュしようとか,GW が終ったらがんばろうとか, 一切意識していなかったので,ものすごく予想外でした.

この結果をヒントに,普段からうまくやる気を引き出す方法について考えてみようかな,と思っています.

それでは,今日も,はりきってまいりましょう!

今週のお題 - WWW を使ってログをとる

先週のあとがきで予告した通り,今週は,ふと思いついたことをご紹介したいと思います.

先週は,ssh で遠隔ログインした時に,その旨をメールで通知する方法というのを, ご紹介しました.
http://www.usupi.org/sysad/010.html

ただ,頻繁に ssh を使われる方は,ぽんぽんぽんぽんメールが飛んでくることになります.
そんなときは,メールうざい,ログでいいや,とゲンナリされることが,予想されます.

じゃあ,メールで通知の代わりに,どこか別のマシンでログをとらせる, ということをやってみましょう.

ちなみに,わざわざ別のマシンでログをとらせるのには,意味があります.
同じマシンだと,ログをとってるのがばればれで,消されてしまう危険性があるためです.

さて,ログといえば,syslog です.よね.
syslog も,別のマシンにログをとってもらったりできるわけですが,UDPを使用していますので,送信元の情報がいまいち信用できません.
間にファイアウォールがあると,syslog のポート(514)を開けてもらわなければならないため,ちょっとやっかいです.

そ・こ・で,WWW サーバの出番です.
WWW なら,TCP だから少し安心ですし,間にファイアウォールがあっても, HTTP は最初から通る可能性が高いので,そのまま使用できそうです.

WWW サーバにアクセスすると,アクセスログが残ります.これを利用して, ssh でアクセスした時に,ログが残るようにします.

ただ,実際に存在するパスにアクセスすると,普通の WWW へのアクセスと区別がつきません. ですので,普通そんなパスにはアクセスしないよ,というパスにアクセスさせます.

例えば,$HOME/.ssh/rc を,以下のようにします.
# 行末を \ で折り返していますが,実際は1行です.

  #!/bin/sh
  wget -O /dev/null \
  http://wwwserver/ssh_access_`echo $SSH_CONNECTION | tr '\040' _` \
  > /dev/null 2>&1

wget コマンドで,WWW サーバにアクセスします.
wwwserver は,WWW サーバです.(本物のサーバを指定してください.)
/ssh_access_... という,存在しないパスを指定しています.
... の部分は,$SSH_CONNECTION の空白を _ に変更したものになります.

これを仕込んで,実際に遠隔ログインすると,wwwserver のアクセスログに, 以下のような1行が記録されます.

  192.168.0.17 - - [15/May/2005:02:09:35 +0900] \
  "GET /ssh_access_192.168.0.17_52460_192.168.0.1_22 HTTP/1.0" \
  404 311 "-" "Wget/1.9.1"

いやあ,これであっさりと目標達成ですね.うんうん.
…と思いきや,エラーログにも記録されていました.

  [Sun May 15 02:09:35 2005] [error] [client 192.168.0.17] \
  File does not exist: \
  /home/httpd/html/ssh_access_192.168.0.17_52460_192.168.0.1_22

二重に記録されるので,実害は少ないとしても,うっとおしいですね.
これは,WWW サーバが Apache なら,httpd.conf に以下を追加することで,回避できます.

  <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^/ssh_access_.* /index.html
  </IfModule>

パスの先頭が /ssh_access_ なら,/index.html を返すようにしています.
これで,エラーログには何も記録されなくなりました.

ちなみに,ログを分けることもできます.

  SetEnvIf Request_URI "^/ssh_access_" ssh_access
  CustomLog /var/log/httpd/ssh_log    combined env=ssh_access
  CustomLog /var/log/httpd/access_log combined env=!ssh_access

パスの先頭が /ssh_access_ なら /var/log/httpd/ssh_log に, そうでないなら /var/log/httpd/access_log に記録します.
これなら,ssh_log だけを見ればよいので,少し楽ですね.
# お使いの環境に合わせて,パスなどを変更してご使用ください.

以上,WWW を使ってログをとる方法を,ご紹介しました.
あくまでも思いつきですので,まだ実際に使ってみている,というわけではありません.(自前のノートには仕込んでありますが….)
でも,あ,これいいじゃん,と思われたら,使ってみてください.
結果がどうであれ,使われてみた方は,メールでご感想などいただけますと, 感謝感激です.

今週の評判が著しく悪い,というわけでもなければ,来週は, もうちょい引っ張らせていただいて,続きをやろうかなと思っています.

宿題の答え

先週の問題は,

  ssh で遠隔ログインした時に,環境変数一覧をメールするようにして
  ください.

でした.
答えは,$HOME/.ssh/rc を以下のようにすればいいと思います.

  #!/bin/sh
  /usr/bin/printenv | \
  /usr/bin/Mail -s "ssh: `/bin/date +\%m/\%d/\%Y/\%H:\%M:\%S`" \
  usu@usupi.org

上記そのままですと,私宛にメールが送信されますので,宛先は変更してください.(私はあまり困りませんが… ;-p)

環境変数一覧がメールで飛んできても,あまりうれしくない気がしますので, 必要な情報だけにするなど,独自に加工してみてください.

今週の宿題

今週の宿題は,こちらです.

  ssh で遠隔ログインした時に,WWW サーバにアクセスし,そのアクセス
  が成功したかどうかわかるようにしてください.
です.
WWW サーバにアクセスするところは,今回ご紹介した通りです.
それが成功したかどうか,というのは,wget が成功したかどうかで判断できると思います.

あとがき

今日は,義弟の結婚披露宴でした.
こじんまりとしたところで,わきあいあいとアットホームな感じの披露宴で, すごくよかったです.わたしももう一回やりたくなったくらいです.

…よかったのですが,普段お酒を飲まないし,お酒に弱いくせに, 調子に乗っていたら,最後にグロッキー状態になってしまいました.

家に帰って,布団の中で苦しんでいたら,子どもが,胃腸薬と水を持ってきてくれました. ああ,この時ほど,子どもがいてよかったと思ったことはないです.ありがとう,息子よ!

…というわけで,なんとか復活して書いている次第です.
もうちょっと先のことを考えて,行動しなければ,と反省しています.
言い訳がましいですが,不適切な文章,誤字脱字がいつもより多かったとしても, 大目に見てやっていただければ,幸いです.

今週も,ここまで読んでいただき,ありがとうございました.
それでは,また来週お会いしましょう!

「いますぐ実践! Linux システム管理」の登録・解除は,以下からどうぞ.
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーはこちら.
http://www.usupi.org/sysad/backno.html

「栗日記」も,毎日毎日描いていますよ!
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本