mysql:2020
From: Seiji Tateyama <Seiji Tateyama <tateyan@xxxxxxxxxx>>
Date: Tue, 16 May 2000 19:20:19 +0900
Subject: [mysql 02020] Re: [Q] Perl ではどう使う?
たてやんっす 私ならこうします という感じで 申し訳ない(忙しい身の上なんです(^^ゞ) まず ログですが /var/log/messages のなかから sendmail のログを取り出すとすると #!/usr/bin/perl open(LOGS,"tail -f /var/log/messages |"); while(<LOGS>) { # # #ここで 処理を行う # # } close(LOGS); といった形で 処理したりします unix の外部コマンドを使いたくない場合などは もうちょいと工夫すれば tail もつかわず perl だけでできますが 説明長くなるんでやめときます #手抜き 処理を行う場合で 例えば May 16 18:27:19 mysql sendmail[9579]: SAA09578: to=<tateyan@xxxxxxxxxx>, delay=00:00:01, xdelay=00:00:00, mailer=local, stat=Sent なんてログから 日時と to を取り出す場合 処理の部分で if(/(\S+\s+\d{2}\s+\d{2}:\d{2}:\d{2})\s+\S+\s+\S+\s+\S+\s+to=(\S+),/) $count++; open(OUTF,">/tmp/log$count.tmp"); print OUTF qq{"$1","$2"\n; close(OUTF); } とすれば ls /tmp/*.tmp /tmp/log1.tmp /tmp/log3.tmp /tmp/log5.tmp /tmp/log7.tmp /tmp/log2.tmp /tmp/log4.tmp /tmp/log6.tmp とできていきまして 中身は "May 16 18:27:19","<tateyan@xxxxxxxxxx>" と言った形になります 正規表現とか qq{} によるクオート表現とか 使ってますので ご理解いただけるかは??? ですが... で この部分を MySQL に食わせてあげればいいんですが DBI / DBD を 使わない方法ということでしたら open(OUTF,">/tmp/log$count.tmp"); print OUTF qq{"$1","$2"\n; close(OUTF); をフィルタでmysql へ突っ込むという荒業で行ってみます? open(OUTF,"|mysql DATABASE名"); print OUTF qq{insert into テーブル名 (val名 ,val名)VALUES("$1","$2");\n}; close(OUTF); なんて ことでどうでしょう (検証してないのでまちがったらごめんなさい) もちろん この部分を DBI で作れば OKっす #/usr/bin/perl use DBI; $user="hogehoge"; #mysql のユーザ名 $passwd="passwd"; #mysql のユーザのパスワード $driver = "mysql"; $database="logs"; #データベース名 $hostname="localhost"; $dsn = "DBI:$driver:$database:$hostname"; $dbh = DBI->connect($dsn,$user,$passwd)|| die $DBI::errstr; $sth = $dbh->prepare("insert into table (date,user) VALUES (?,?)")|| die $dbh->errstr; open(LOGS,"tail -f /var/log/messages |"); while(<LOGS>) { $sth->execute(); if(/(\S+\s+\d{2}\s+\d{2}:\d{2}:\d{2})\s+\S+\s+\S+\s+\S+\s+to=(\S+),/) $sth->execute($1,$2) || die $dbh->errstr;; } } という 形でいけるかも Ctrl-C で終了した場合とか のハンドラを入れればGOODかも ただし ログはローテートされてないことを前提に書いてますし endo@xxxxxxxxxx (遠藤 俊裕) さんは Perl ではどう使う? にて 遠> ども、えんどうです。 遠> 遠> 遠藤 俊裕 さんは書きました。 遠> >ということで、堤井さんの方法で行ってみようと思います。 遠> 遠> と思って、さっそく作り始めたのですが、またぶつかりました。 遠> 遠> データはずーっと出てくるわけで、それをフィルタすると 遠> ファイルはいつまでも完結しないわけで、そうすると mysql 遠> にファイルを食わせることが出来ないわけで。。。 遠> 遠> perl もよく分かってないもので困ってしまっているのですが、 遠> ちょっと mysql と趣旨が違っちゃってますけど、どなたかご 遠> 教授ください。 ============ 彡彡从 たてやんっす d□/□-b <tateyan@xxxxxxxxxx> ヽ"ー"丿
2015 2000-05-16 10:55 [<endo@xxxxxxxxxx> ] [Q] Perl ではどう使う? 2016 2000-05-16 11:53 ┣["Y. Tutui" <tutui@xx] 2018 2000-05-16 14:12 ┃┗[<endo@xxxxxxxxxx> ] 2019 2000-05-16 15:27 ┃ ┗[<endo@xxxxxxxxxx> ] -> 2020 2000-05-16 19:20 ┃ ┗[Seiji Tateyama <tate] 2021 2000-05-16 19:40 ┃ ┣[Seiji Tateyama <tate] 2022 2000-05-16 19:52 ┃ ┗["Y. Tsutsui" <tutui@] 2024 2000-05-16 23:03 ┃ ┗[tateyan <tateyan@xxx] 2026 2000-05-16 23:20 ┃ ┗[tateyan <tateyan@xxx] 2027 2000-05-17 00:00 ┃ ┗[tateyan <tateyan@xxx] 2028 2000-05-17 00:14 ┃ ┣["Ningfeng Yang" <yan] データベースに画像ファイルを保存できますか? @ 2031 2000-05-17 00:21 ┃ ┃┗[hama <KHC01210@xxxxx] 2032 2000-05-17 00:52 ┃ ┃ ┣[hama <KHC01210@xxxxx] 2034 2000-05-17 01:05 ┃ ┃ ┃┗["Ningfeng Yang" <yan] 2033 2000-05-17 00:58 ┃ ┃ ┗["Ningfeng Yang" <yan] 2043 2000-05-17 08:39 ┃ ┗[<endo@xxxxxxxxxx> ] 2017 2000-05-16 12:03 ┣["Akinobu Yamamoto" <] 2044 2000-05-17 10:23 ┗[Satoshi Koiwa <koiwa] 2045 2000-05-17 10:35 ┣[<endo@xxxxxxxxxx> ] 2046 2000-05-17 10:42 ┗["Y. Tsutsui" <tutui@]