ホーム » コンピュータ (ページ 93)
「コンピュータ」カテゴリーアーカイブ
フロッピーアイコン判る?
子どもの夏休みのネタでExcelを子どもにちょっぴり教えてみた。 子どもも面白がってるし、パパ・ママそろって色々教える。
ママ:「保存するときは、このフロッピーのアイコンを押すんだよ。」 パパ:「あれ?、フロッピーって実物しってるんだっけ?」 子供:「名探偵コナンでフロッピーでてくるから知ってるよ...」 パパ: (さすが...10年成長していないコナン君...)
USBRHをnagiosで警告メール
muninを使って、USBRHで室内温度の警告をさせていたけど、 警告状態になった時の連続メールがうざいので、 スクリプトを間に入れたけど、動きがおかしいので、 監視を nagios3 にさせてみようと実験。
nagiosであれば、管理画面で警告メールの送信などを、Webで止めたりできる!!
nagios3 でチェックするには、check_XXXX といったプログラムが必要だけど、 USBRH では、自作する必要がある。普通ならperlを使うんだけど、 簡単な処理で、巨大なPerlインタプリタを実行するのは避けたい。 以前から、モジュール機能の無い「組み込み専用Perl」が無いかと、 物色していたけど、Lua というプログラム言語を見つけた。 というわけで、初めての Lua で、check_usbrh を作ってみた。
(( Luaインストール ))
# aptitude install lua50
(( /etc/nagios3/my-plugins/check_usbrh ))
#!/usr/bin/lua
-- arg[1] warning
-- arg[2] critical
if table.getn(arg) < 2 then
print( "UNKNOWN" )
os.exit( 3 )
else
warning = tonumber( arg[1] )
critical = tonumber( arg[2] )
end
fh = assert(io.popen("/usr/local/bin/usbrh","r"))
temp = tonumber( fh:read("*n") )
hum = tonumber( fh:read("*n") )
fh:close()
if temp >= critical then
print( string.format( "USBRH CRITICAL - %4.2f,%4.2f%%" ,
temp , hum ) )
os.exit( 2 )
elseif temp >= warning then
print( string.format( "USBRH WARNING - %4.2f,%4.2f%%" ,
temp , hum ) )
os.exit( 1 )
else
print( string.format( "USBRH OK - %4.2f,%4.2f%%" ,
temp , hum ) )
os.exit( 0 )
end
(( /etc/nagios-plugins/config/usbrh.cfg ))
# 'check_usbrh' command definition
define command{
command_name check_usbrh
command_line /etc/nagios3/my-plugins/check_usbrh
'$ARG1$' '$ARG2$'
}
(( /etc/nagios3/conf.d/localhost_nagios2.cfg ))
# USBRH
define service{
use generic-service
host_name localhost
service_description USBRH
check_command check_usbrh!32!35
}
Lua 、こりゃ、ほんとに軽そうな言語。数値が絡んだら、awk とか使ったりしてたけど、 これならsh変わりにも使えそう。
Google+を使ってみる
Google が始めたFacebookもどきの"Google+"を試してみる。 Facebookはしないという人でも、"Google+" であれば Google アカウントを 持っていればすぐに使えるので、利用者拡大という意味では、 後発のGoogleとはいえあなどれない。
ついでに、自宅サイトと職場サイトに、"+1"ボタン(Facebookの"いいね" or "Like"ボタン)の設置をしてみた。説明に従い、MovableType にて、下記の設定を埋め込んでみた。
(( 以下のコードは<head></head>に設置 ))
<script type="text/javascript"
src="https://apis.google.com/js/plusone.js">
{lang: 'ja'}
</script>
(( 以下のコードは設置場所に )) <g:plusone></g:plusone>
んで、この設定を追加している途中で、Facebookのいいねボタンの設置で、 URLの部分のGETパラメータを渡す、変数区切り文字"&"が、 "&"に化けていたので、うまく動いていないことが判明。 早々にこちらも修正&再構築。
arpalertを使ってみる
Wi-Fi経由の勝手な接続などの検出ということで、arpwatchを使っていたけど、 携帯で3G経由で使った後だと、そのアドレスでWi-Fi接続を試すため、 いちいち警告メールが届くのが紛らわしい。 そこで、別のARP監視システムを探してみた。
arpalert は、監視して whitelist とか、発見時のスクリプトを指定できるので、 もう少しきめ細かな警告ができそう。
Debianのパッケージで入れて、警告時に起動するスクリプトに、付属のスクリプトを修正して登録してみた。動かすとサーバ自体の警告メッセージが送られてきた。 原因は、古いサーバとの互換性を考えて、1つのインタフェースに2つのIPアドレスを割り振っているためだった。チェックの度に、2つのアドレスで変わっているとみなされている。 しかたがないので、maclist.allow の最後に、ip_change フラグを付けて、 アドレス変化を無視させる。
(( インストール )) # aptitude install arpalert (( /etc/arpalert/arpalert.conf )) Debianのパッケージをそのまま。 (( /etc/arpalert/maclist.allow )) xx:xx:xx:xx:xx:xx 192.168.xx.xx eth0 xx:xx:xx:xx:xx:xx 192.168.xx.yy eth0 ip_change xx:xx:xx:xx:xx:xx 192.168.xx.zz eth0 ip_change (( /etc/default/arpalert )) ARGS="-e /etc/arpalert/send_alert.sh" (( メール送信のひな形をコピー )) # cp /usr/share/doc/arpalert/examples/scripts/contribs/send_alert.sh /etc/arpalert/ (( /etc/arpalert/send_alert.sh )) #!/bin/sh # Intruder MAC address intruder_MAC=$1 # Intruder IP address intruder_IP=$2 # Alert Type intruder_AlertType=$5 # Ethernet Vendor intruder_Vendor=$6 # Mail recipient mail_To="root" date=`LANG=C /bin/date` # Subject mail_Subject="[arpalert] IP/MAC alert" # Body and send mail cat << EOF | mail -s "$mail_Subject" $mail_To [arpalert] Intruder Detected Intrusion time stamp : $date Intruder IP Address : $intruder_IP Intruder MAC Address : $intruder_MAC Type of alert : $intruder_AlertType Ethernet Vendor: $intruder_Vendor EOF
サーバの警告メールが届かないと思ったら…
自宅サーバのnagios3の状況監視の設定を少し変更していたけど、 警告メールが届かない。そういえば、munin の警告メールも届かない。 そういえば、数日前、携帯の迷惑Eメール防止設定を変更したっけ。
受信許可ドメインの設定ついでに、なりすまし規制の設定レベルを (高)を選択したのが原因っぽい。 自宅サーバはDynamic DNSの設定で、丹南ケーブルTVのサーバ経由で メールを送信している。このため『なりすまし』扱いをうけやすいんだった….
perl CPANのアップデート
Debianでパッケージのアップデートで、通常は、"aptitude safe-upgrade"だけど、 時々install時に競合が多いので、久々に"aptitude dist-upgrade"かけてみた。 色々とアップデートされて、よかったけど、時間がたつと、自作perlスクリプトが 動かない。どうも、CPANで入れていた"Net::Google::Calendar.pm"が古いみたい。
google で "perl CPAN アップデート"を実行すると、やっぱり簡単に見つかる。 参考記事を見ながら、以下を実行。
(( アップデート可能なモジュールを一覧 )) # perl -MCPAN -e 'CPAN::Shell->r' (( 全部をアップデート )) # perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'
最近は、"aptitude install libXXXX-perl" で確かめて入れていたので、 必要最小限しか入っていないと思っていたけど、やっぱりいつのまにか CPANパッケージたっぷり入ってるな…
うーむ、Perlの更新の余波が…自作スクリプトに、関数呼び出しの do を使ってたのが 残ってた。 『Use of "do" to call subroutines is deprecated at …』なんてエラーが 出て、スクリプトが動かなくなってら…
メールのウィルス除去postfix+amavisd+clamav
気まぐれで自宅サーバの受信メールのウィルス除去の設定。 その前に、自宅サーバ宛のメールなんてめったに来ないけど…
Debian postfix clamav にて見つかったページを参考にする。
(( インストール )) # aptitude install amavisd-new (( /etc/postfix/main.cf )) # amavisd設定 content_filter = smtp:localhost:10024 (( /etc/postfix/master.cf )) # amavisd設定 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o myhostname=localhost
/usr/share/doc/amavisd-new/README.postfix.html を見ると、 amavisfeed とか書いてあるけど、contents_filterのsmtp の欄に amavisfeed とかを 書く設定があるけど、よくわからないんだよなぁ…
Thunderbird 5.0 になったけど

メールソフトのThunderbirdが5.0になった。 Firefoxとバージョン番号の統一で、4.0すっとばし。 でも、公開されたばかりで、多少のトラブル。
まず、プラグインが未対応なのが困る。時間の問題とは思うけど、 Google Contactsがダメ。Gmailの連絡帳の同期がされないのは致命的だ。 それに、ThemeでMacのAqua風のものが未対応。シンプルなテーマがいい。
あと、最近になってようやくIMAP対応になった、yahoo.co.jp をThunderbirdで読んでいるけど、 "[CLIENTBUG] ID is not a valid IMAP Command" なるエラーメッセージが 表示される。IMAPコマンドの実装の不完全さの問題にみえるし、ぐぐれば対応策が すぐに見つかると思ったけど、思ったほどみつからない…
どーでもいいけど、Thunderbird 5号は宇宙ステーションだったか… 小さいころ、プラモデル作ったのを思い出した…
linux-image-2.6.39-2にしたらARPモニタが…
自宅でネットワークに繋がっている機器の モニタリングということで、muninでarpを 観察させていた。 しかし、今回 linux-image-2.6.39-2 が配布されて OSを更新したら、出力グラフの表示のされ方が かわってきた。 arpのデータが廃棄されるまでの時間が延びたみたい。 うーむ….

munin-limitsの警告を最小限に…
(2011/7/7追記)どうも、以下のプログラムでは、メール送信プロセスが 正しく終了せず、メール送信プロセスが溜まってしまう。 muninのcontact.XXX.command にスクリプトを書くのはまずいみたい。 "/usr/bin/perl /…PATH…/notify.pl…" とすれば動いた。 どうも、command にスクリプトが書いてある場合"sh -c" してくれているんだけど、 何か不具合があるような…
muninで、USBRTの温度監視ができて、munin-limitで警告メールがだせるようになった。 でも、本来の目的は家猫の体調のためなので、警告温度は34℃ほどに設定したら、 設定温度を越えたら5分おきに、ずーっとメールが届く。 さすがに、職場じゃ大量のメールが届くので、状態が閾値を越えたときにだけメールが欲しい。
メールを送るスクリプトに、warning,criticalのデータ件数をつけて呼び出すようにして、 件数が変化していなければ、メールを送らないようにした。
(( /etc/munin/munin.conf ))
contact.nagios.command \
/usr/bin/perl /etc/munin/my-plugins/notify.pl \ # (7/7修正)
"${var:numwfields}:${var:numcfields}" \
"[Munin] tsaitoh.net" \
携帯メアド
(( notify.pl ))
#!/usr/bin/perl
exit 0 if ( @ARGV < 3 ) ;
my $stat = shift @ARGV ;
my $subj = shift @ARGV ;
my $mailto = shift @ARGV ;
my $last_file = "/var/run/munin/munin.last-stat" ;
my $last_stat = "" ;
# 前回の状態を読み込む
if ( open( FH , "$last_file" ) ) {
$last_stat = <FH> ;
chomp( $last_stat ) ; # chompの使い方間違ってた...
close FH ;
}
if ( $stat eq $last_stat ) {
# 状態の変化がなければ報告しない
exit 0 ;
} else {
# 状態を記録しておく
if ( $stat eq "0:0" ) {
unlink( $last_file ) if ( -f $last_file ) ;
} elsif ( open( FH , ">$last_file" ) ) {
print FH "$stat\n" ;
close FH ;
}
# 報告を送信する
if ( open(FH,"|/usr/bin/mail -s \"$subj\" \"$mailto\"") ) {
while( <> ) {
print FH $_ ;
}
close FH ;
}
}