- PR -

log管理のシェルスクリプトについて

1
投稿者投稿内容
シゼル
会議室デビュー日: 2005/04/13
投稿数: 3
投稿日時: 2005-04-13 20:32
syslog(ここでは/var/log/syslogとします。)にgrepをかけて日時をキーワードにlogを引っ張ってくるようなことはできるのでしょうか。
また、それにエラー(ここではeraとします。)とエラー以外のメッセージを分けることができる引数をつけたいと考えています。
以上のようなことは可能なのでしょうか。
よろしくお願いいたします。
シゼル
会議室デビュー日: 2005/04/13
投稿数: 3
投稿日時: 2005-04-13 20:40
また、これを対話方式でおこないたいのです。
綾瀬
ぬし
会議室デビュー日: 2002/07/31
投稿数: 393
お住まい・勤務地: どっちも3階
投稿日時: 2005-04-14 10:17
可能か不可能かというだけなら、可能です。
どうやるかまでは聞いてないみたいなので書きませんが。

実際にスクリプトを作っていて、どこかで躓いているのでしょうか。
それであれば、こういうところで躓いてるんだけど、のような質問をされれば
助言してくれる方もいらっしゃると思いますよ。

#私には丸投げしてるようにしか見えませんでしたので、なんとんく。。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-04-14 11:16
「対話方式で」とのご希望ですが、それは例えば netconfig や ntsysv のような方式を想像されていますか?
シェルスクリプトのみでは、満足できる対話方式を完成させるのは難しいと思いますし、何より「対話方式」だけでは漠然としすぎています。
それに、今回の仕様では、対話形式にするメリットも今一想像しづらい。

私がもし組むなら、

 ・スクリプト名
   syslog を grep するので、syslogrep でどうでしょう?

 ・日付の指定オプション
   --from=日付、--to=日付 で指定、省略した場合は無制限

 ・エラーの抽出
   --error-only オプションで、エラーのみを抽出、
   --exclude-error オプションで、エラー以外を抽出、
   特に指定しなければ、全てを抽出

 ・エラーの判断
   --error-pattern=正規表現 オプションで指定された文字列を含むかどうかで行う。
   省略時は、'\(error\|failure\|critical\)' という正規表現でパターンマッチ。

 ・検索対象ファイル
   --log-file=パス名 オプションで、対象のログファイルを変更できるようにする。
   省略時は、/var/log/messages から検索する。

 ・コマンドの例
   $ syslogrep --from=2005/04/01:09:00:00 --to=2005/04/01:12:00:00 \
    --error-only --log-file=/var/log/messages.1

のような感じでいきますかね。
シェルスクリプトでやるより、perl 等で組んだ方が楽なようにも思いますが。
以上、…ちょっと考えてみただけなので聞き流して下さい。

[ メッセージ編集済み 編集者: angel 編集日時 2005-04-14 11:17 ]
シゼル
会議室デビュー日: 2005/04/13
投稿数: 3
投稿日時: 2005-04-15 00:32
お返事ありがとうございます。
私がいま躓いているところは引数で日時、エラータイプを指定する記述がわからないことです。
初歩の質問だとは思いますがよろしくおねがいいたします。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-04-15 02:02
酷かもしれませんが、この状態でお望みのスクリプトを組むのは到底無理ではないでしょうか。
何より、シェルスクリプトでやる範囲を超えていると思います。勿論やってできないことは無いですが、せめてもっと具体的に機能を絞らないとキツいでしょう。
引用:
私がいま躓いているところは引数で日時、エラータイプを指定する記述がわからないことです。


一応ヒントとしてはbashの、

・位置パラメータと、ビルトインコマンド shift
・パラメータの展開
・while do 〜 done や case 〜 esac といった制御構文
・(使いこなせるなら) ビルトインコマンド getopts

位でしょうか…。
いずれにせよ、プログラミングのトレーニングがもうちょっと必要だと感じます。
1

スキルアップ/キャリアアップ(JOB@IT)