人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

syslog.conf から シェルスクリプトを起動させる方法を教えてください。

syslog.conf を下記のように設定したのですが、シェルスクリプトを起動させられません。
解決策をおもいつく方がいましたら、ご教授いただけると幸いです。

(1)OS
Ubuntu 8.10

(2)syslog.conf
syslog.confに、下記の行を加えました。
$cat /etc/syslog.conf
...
*.=info |sh /home/user/mail.sh # 実行されない。
mail.err |sh /home/user/mail.sh # 実行されない。
mail.warning |sh /home/user/mail.sh # 実行されない。
mail.* |sh /home/user/mail.sh # 実行されない。
mail.info /home/user/test.log # test.log に、書き込まれる。

(3)作成したシェル
ちなみに /home/user/mail.sh は下記のようになっています。
メールサーバと作成したシェルは、正常に動作することを確認しております。
$cat /home/user/mail.sh
#!/bin/sh
cat <<END |mail -s "You got a log." user@localhost
This is a test mail.
END

(4)権限
また、権限はつぎのようになっています。
$ ls -l mail.sh
-rwxrwxrwx 1 user users 359 2009-01-26 17:27 mail.sh

(5)あがいたこと
いちおう、下記の設定も試しましたが、どうもうまくいきません。
*.=info |head -c 10 |sh /home/user/mail.sh

1232989740
●拡大する

●質問者: shotaroh5663
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:/bin/sh ETC HOME localhost LS
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● YasudaS
●40ポイント

シェルを起動する機能は、syslog.confには、ありません。

ちょっとトリッキーですが、パイプファイルへの出力を行う様にsyslog.confを書き直して、

そのパイプファイルを読み込んで稼働する様なプロセスを別建てにするとよいでしょう。

syslog.confの"|"は、名前付きパイプへの出力であって、

シェルにある様なパイプでプロセスを起動するという意味ではありません。

http://itpro.nikkeibp.co.jp/members/NBY/techsquare/20030630/1/

◎質問者からの返答

とんだ勘違いをしていたわけですね。

ご回答ありがとうございます。


2 ● JULY
●80ポイント ベストアンサー

標準の syslogd では YasudaS さんがおっしゃる通りで、パイプを使ったもう少し具体的な方法が下記のページに書かれています。

syslogd でパイプを使ってみる - マミ's ページ

この方も、「|」の後ろに直接プログラムを書いたら失敗して、パイプファイルを作って...、という経緯が書かれています。

標準の syslogd の代わりに syslog-ng を使えば、直接的に外部プログラムを呼び出すことが可能になっているようです。ただ、設定ファイルの書式がガラッと変わるので、チャレンジする余裕があれば、ですが(^^;

マクロやテンプレでsyslog-ngを使い倒す(2/3) - @IT

syslog-ngの導入

◎質問者からの返答

なるほど、syslog-ng を使うとプログラムを呼び出せるわけですね。

エラーログを検知すると、メールを送信する"設定"をしたかったのですが、

おかげ様で、その設定もsyslog-ngでないと無理らしいことがわかりました。

http://www.atmarkit.co.jp/fsecurity/rensai/unix_sec09/unix_sec01...

もともと、syslogdに詳しいわけではないので、syslog-ngに挑戦してみようと思います。

ご回答ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ