ホーム » 未分類 (ページ 77)
「未分類」カテゴリーアーカイブ
qmail の送信データ数のカウント
MRTG にて qmail の送受信のメール数をカウントしようと、 qmailmrtg をインストールしようとするが、 multilog やら qmail の起動スクリプトの変更やら、後々面倒そう。 ということで、カウント用のプログラムをちょいと作る。
logcount.pl
Debian には、log 関係のプログラムも色々あるみたいだけど、 設定もややこしそうで、Perl FN ログ整理ということで『C で高速化?』とも思ったが、汎用性を考えると正規表現は 欲しいし、試しに作った Perl でも十分すぎる速度であった。 /FN で作ってみる。
設定ファイル記録した正規表現に、パターンマッチした行の数をカウントすることにする。 またリアルタイムに計数したいので、前回読み込み終了した場所を保存しておき、 次回は seek で途中から行うことにする。
≪ /etc/mrtg.d/qmail.conf : qmail の受信・送信の履歴をカウントする正規表現ファイル ≫
\w+ qmail: \d+\.\d+ starting delivery \d+: msg \d+ to remote
\w+ qmail: \d+\.\d+ starting delivery \d+: msg \d+ to local
≪ /etc/cron.d/qmail-smtp : 5分おきにログファイルをカウント ≫
1-56/5 * * * * root if [ -x /etc/mrtg.d/logcount.pl ]; then
/etc/mrtg.d/logcount.pl -c /etc/mrtg.d/qmail.conf
-s /var/run/logcount.txt /var/log/syslog 2>&1;
fi
≪ /etc/mrtg.d/qmail-mrtg.sh : MRTG 用のデータを作るプログラム ≫
#!/bin/bash
/usr/bin/tail +2 /var/run/logcount.txt | /usr/bin/head -2
/usr/bin/uptime | cut -d, -f 1
echo qmail
≪ /etc/mrtg.d/logcount.pl : カウントするプログラム ≫
#!/usr/bin/perl
use Getopt::Std ;
# カウント情報を保存するファイル
$stats = "/var/run/logcount.txt" ;
# Usage: logcount.pl -c 設定ファイル -s 計数ファイル ログファイル
# 設定ファイル
# 1行毎にログファイルとパターンマッチする正規表現を記載
# 計数ファイル
# 先頭行は、最後に読み込んだファイル位置
# 残りの行は、パターンマッチした行の数
getopts( "c:s:" ) ;
$config = $opt_c if ( $opt_c ne "" ) ;
$stats = $opt_s if ( $opt_s ne "" ) ;
# 設定ファイルの読み込み
open( CONF , "$config" ) || die( "Can't open $config\n" ) ;
for( $size = 0 ; $line = ; $size++ ) {
next if ( $line =~ /^#/ ) ;
$line =~ s/\s+$// ;
$regex[ $size ] = $line ;
}
close( CONF ) ;
# 計数ファイルの読み込み
if ( ! -f "$stats" ) {
open( STAT , ">$stats" ) || die( "Can't open $stats\n" ) ;
close( STAT ) ;
}
$seek = 0 ;
if ( open( STAT , "+<$stats" ) ) {
$seek = 0 + ;
for( $j = 0 ; ($j < $size) && ($line = ) ; $j++ ) {
$count[ $j ] = 0 + $line ;
}
}
# ログファイルを開く
$logfile = shift( @ARGV ) if ( @ARGV > 0 ) ;
open( LOG , "$logfile" ) || die( "Can't open $logfile\n" ) ;
@stat = stat( LOG ) ;
if ( $stat[ 7 ] < $seek ) {
$seek = 0 ; # 切り詰められたら先頭から読み直し
} else {
seek( LOG , $seek , SEEK_SET ) ;
}
# ログファイルの読み込み
while( $line = ) {
#print $line ;
if ( $line =~ /\n$/ ) {
($date , $logdata) = ($line =~ /^(\w+\s+\d+\s\d+:\d+:\d+)\s+(.*)$/) ;
# パターンマッチする表現を求める
for( $i = 0 ; $i < $size ; $i++ ) {
$rex = $regex[ $i ] ;
if ( $logdata =~ /$rex/ ) {
$count[ $i ]++ ;
break ;
}
}
$seek = tell( LOG ) ;
} else {
last ; # 追記中で行末が無いデータなら処理せず終了
}
}
close( LOG ) ;
# 計数ファイルを更新
seek( STAT , 0 , SEEK_SET ) ;
print STAT "$seek\n" ;
for( $i = 0 ; $i < $size ; $i++ ) {
print STAT $count[ $i ]."\n" ;
}
close( STAT ) ;
bluez でデータ転送(opd)
bluez 環境にてbluetooth対応携帯(W31T)とデータ転送を試してみた。
opd のインストール
OPP プロトコルを受けるための opd は、debian では無かったので、参考サイトの情報を元にインストール。
# apt-get install libbluetooth1 libbluetooth1-dev $ mkdir opd $ tar zxvf ../opd-v0.2-2003-03-18.tar.gz $ vi Makefile ≪ libspd は libbluetooth に組み込まれたので -lsdp を削除 ≫ $ make $ su # cp opd /usr/local/sbin/
opd を使ってみる
bluez の動作にて hcid と sdpd が動作していることを確認し、W31T で接続相手を探すが、 サポートしているプロトコル欄に何も表示されない。sdptool で対応プロトコルを設定する。
# sdptool add --channel=2 OPUSH
これにより W31T にて OPP プロトコルが見えるようになる。
# /usr/local/sbin/opd --mode BIP --channel 2 --daemonize --path /home/hoge/bluetooth-inbox
W31T の (M663)データ送信にて『接続』を選ぶと、アドレス帳、プロフィールを送信することができた。 しかし、BIP(イメージ転送)を選んでいるんだが、(M662)ピクチャ送信を実行しても、 「対応機器ではありません」とつれない返事。 "–mode" は OBEX でも転送ができた。
バッテリートラブル
昨日、自宅作業小屋に車を止めた時、車のドアをきちんと閉めていなかったため、 今日の朝はバッテリーが上がってしまい、車が動かない。 お隣さんにバッテリーケーブルを借り、車のバッテリーを繋ぎ、動かそうとする。 しかしバッテリーのパワー不足が原因で、エンジンがかからなかった。
やむおえず JAF を呼ぶ。加入はしていても、この数年呼んだこともない FN 前回は廃車寸前の前の車が、ラジエータが壊れ高速でサポートを依頼して以来。 /FN し、たまには会費分をとりかえそうと呼んでみる。 JAF 到着で、専用のバッテリーを使ったら、いっぺんでエンジンがかかり、 あっさり終了であった。
Virus Buster 2006 のインストール
スパイウェア対策などが中心で、あんまり欲しい新しい機能が無かったので、 面倒さもありインストールしていなかった VB2006 を、試しに入れてみる。
フィッシング対策ということで、個人情報を登録しておくと、個人情報を送出すると 警告してくれるらしい。だけど、VB に個人情報を登録する事自体を不気味に 感じてしまう。ということで、当面使わない機能だな。
緊急連絡システムに値段をつけると
ガッコで作った緊急連絡システムだが、嶺南の小学校で導入した事例は、 新聞の写真から想像すると、Windows ベースでメールをばらまくだけ。
# Excel マクロでも作れるな…
安定運用になれば、50円/人/月らしい。
今の越前市のデータが揃って、同じ価格なら概算で、50円×10000人×12ヵ月=600万/年。 でも、こっちの方が利用者確認やらQRコードなどの機能が豊富で、無償提供!
# 格安設定とかいって10円/人/月として、100万/年もらっても…
嶺南のシステムの、個人情報漏洩対策はシステムのノートパソコンごと金庫に保管。 こっちは SSL+パスワード+Debian+Firewall、ひとまず十分と思える対策だが、 ネットワークに完璧は無い。と言う点で『金庫に保管』には勝てないな…
金箔のランドセルだって
みつくんもそろそろ1年生。 ランドセルの購入の時期。ヒーロー物の影響か『赤のランドセルがいい!』と言っている。 絶対、入学して色の事を言われて後悔しそうな性格だし… でも、ニュースを見ていると金箔のランドセルだってさ。
# そんなのつけて学校行ったら、絶対いじめられるって….
カップラーメンをおいしく食べる裏技!?
カップラーメンのお湯の代わりに、牛乳や緑茶を使うと、 美味しいらしい。 試したいけど、こりゃかなりチャレンジャー….ネタか?
—– EXTENDED BODY:
犬も尿路結石だって
正月に姉が遊びに来てたときに、犬に血尿があることをみつけてくれ、 じぃばぁに動物病院に連れていってもらう。 診断は『尿路結石』。同じ病気持ち仲間ってか….
gdmのXサーバでリモート接続
昔々の X を使っている頃は、xclock -display host:0.0 といった、 -display オプションを使いサーバをまたがって作業をしていたが、 "xhost +" を実行しても Can't open display 等と表示されていた。 ホスト画面を乗っ取られるから、セキュリティ的に NG なのは解っているが、 便利な機能なので、使いたい機能。xdm であれば、Xaccess なりのファイルで 制限を加えられることは見つかるのであるが、gdm の場合は情報がなかなか見つからない。
VNC サーバを使えるようにするために、gdm にて、
≪ /etc/X11/gdm/gdm.conf ≫ [xdmcp] Enable=true
といった設定を加えるという説明を見つけ、VNC から接続ができるようになる。 しかし、コンソールの X 画面では、相変わらず -display 接続が拒否される。
≪ /etc/X11/gdm/gdm.conf ≫ ## Note: # is your X server not listening to TCP requests? Perhaps you should look # at the security/DisallowTCP setting! : [server-Standard] # command=/usr/X11R6/bin/X -audit 0 -nolisten TCP command=/usr/X11R6/bin/X -audit 0
よくよく gdm.conf を読むと、上記のような行を発見。ということで、
≪ /etc/hosts.allow ≫ gdm: 192.168.XX.0/255.255.255.0 ≪ /etc/X11/gdm/gdm.conf ≫ DisallowTCP=false
