ホーム » コンピュータ » Linux (ページ 35)

Linux」カテゴリーアーカイブ

システム

最近の投稿

アーカイブ

カテゴリー

/etc/default/keyboardなのか…

サーバを更新してから、バージョン上がっていったら、キー入力が変になってきた。 キーをタイプしても、打てないキーや不規則にキーが捨てられたり。 どうも、Caps Lock / Ctrl の入れ替えで小技を使っていたのが、 最近のパッケージの流儀に合わないらしい。

(( 設定を改めて更新))
# dpkg-reconfigure -phigh xserver-xorg

これによって、Xが立ち上がってもキーが利かなくなることはなくなったが、 当然ながら Caps Lock と Control が元通り。不便極まりない。 色々調べてみると、最近は、/etc/default/keyboard で変更するらしい。

(( /etc/default/keyboard ))
XKBMODEL="a4techKB21"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS="ctrl:swapcaps"

Debian/testing に linux-image-3.0.0-1 登場、入れちゃった。

朝の暇つぶし、なにげに Debian のアップデートかけてたら、 ついに linux-3.0.0 が登場。メジャー番号が 2→3というと、大抵いろいろなトラブルが 発生するから、普通なら様子見なんだけど、 今回の、 2.6.39→3.0.0 はニュースを見ると大きな更新は無い。 2.4→2.6でさえトラブルが多かった(正確に言うとレガシーな設定を使い続けるヤツだから発生するトラブル)のに、 2.6→3.0 はすんなりNo Trouble あるね。

2.6.38→2.6.39 で ARP テーブルの管理が変わって、 自宅内の稼働しているネットワーク機器の状況が観測しづらくなっていたけど、 当然ながら、3.0 でも同じ。 おかげで、子どものゲーム機のネットワーク接続監視は、困難になった。
# なんかいい方法ないかなぁ…

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変わりにも使えそう。

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 …』なんてエラーが 出て、スクリプトが動かなくなってら…

linux-image-2.6.39-2にしたらARPモニタが…

自宅でネットワークに繋がっている機器の モニタリングということで、muninでarpを 観察させていた。 しかし、今回 linux-image-2.6.39-2 が配布されて OSを更新したら、出力グラフの表示のされ方が かわってきた。 arpのデータが廃棄されるまでの時間が延びたみたい。 うーむ….

1106221112_497x388.png

munin-limitsで警告メール

USBRHで室温監視ができるようになったけど、 暑くなったのに気づかなければいけないので、 munin-limits でメールを送るように設定。

/etc/cron.d/munin-nodeを見ると、警告を送るコンタクト名は”nagios”になっているので、 “contact.nagios.command” に送付先の携帯のメールアドレスを登録することにする。 Debianなら、余計な設定ファイルは細かく触らないに限る…

(( /etc/munin/munin.conf ))
# メールの送り先とSubjectの設定
contact.nagios.command mail -s "[Munin] ${var:group}::${var:host}" 携帯メアド
contact.root.command mail -s "[Munin] ${var:group}::${var:host}" root
# a simple host tree
[localhost.localdomain]
address 127.0.0.1
use_node_name yes
# USBRHの警告範囲
usbrh.tempreture.warning            31
usbrh.tempreture.critical           34
# CPU負荷の警告
load.load.warning                   2.5
load.load.critical                  3.5
# ディスク使用量の警告
df._dev_sdc1.warning                70
df._dev_sdc1.critical               90
df._dev_mapper_lvm_lvm0.warning     70
df._dev_mapper_lvm_lvm0.critical    90
# プロセス総数の警告
processes.processes.warning         300
processes.processes.critical        400
# S.M.A.R.Tの警告文章は大量で長いから報告させない
smart_sda.contacts                  no
smart_sdb.contacts                  no
smart_sdc.contacts                  no

熱くなってきたしUSBRH復活

USB接続の温度・湿度センサーのUSBRHだけど、 新しいサーバに切り替えて、ドライバの認識がうまくいかないので、 外してあった。 そろそろ部屋も暑くなってきたので、気まぐれで復活をさせてみた。 CPU温度やらHDDのS.M.A.R.Tセンサーで大体の温度は測れているけど、 バックアップ処理で急激に温度変化するし、やはりサーバ処理とは関係のない 温度センサーじゃないとだめ…

以前は、 USBRH driver for Linuxを 使っていたけど、x64のせいなのか、ダメ。 USBRH on Linuxを 使ってみた。以前は、どうもデータ取得に失敗していたけど、 今思うと、"USBRH driver…"と競合してただけかもしんない。 あっさりデータ取得に成功する。

継続して温度観察できるように、muninの設定をしてみた。 センサーは1つだけだし、必要最小限のコードにて…
あとは、警告メールの送信機能の設定かな… munin-limitsあたりを参考に、設定をしてみよう。

#!/bin/bash
#%# family=auto
#%# capabilities=autoconf
USBRH="/usr/local/bin/usbrh"
available="yes"
case $1 in
config)
echo "graph_title USBRH Tempreture/Humidity"
echo "graph_category sensors"
echo "graph_vlabel Temp(C) / Humid(%)"
echo "graph_args -l 0 --base 1000"
echo "humidity.label Humidity"
echo "humidity.draw LINE2"
echo "tempreture.label Tempreture"
echo "tempreture.draw LINE2"
exit 0
;;
autoconf)
if [ "$available" = "yes" ]; then
echo "yes"
exit 0
else
echo "no (daemon isn't running)"
exit 1
fi
;;
snmpconf|suggest)
exit 0
;;
*)
;;
esac
# データの読み出し
values=(`$USBRH`)
echo "tempreture.value" ${values[0]}
echo "humidity.value" ${values[1]}

久々のEmacs Lisp…

Mac OSでLaTeXを使っていて、Emacsで編集してるんだけど、 *.tex を pTeX アプリに投げるのは面倒だし、Emacs でコンパイルと思うんだが、 MacBookでは動いたものが、動かない。 "M-x shell"でコマンド打つけど、Emacs の補完もされない。 今までPathが通っていて当たり前としか思ってなかったけど、 Emacs の exec-path なんてあったんだ… ということで、init.el に下のようなコードを追加。
# /usr/local/bin も通ってないし…
久々にEmacs lisp 触ると、LISP 自体忘れている…

(( $HOME/.emacs.d/init.el ))
;;
(mapcar
(function
(lambda (str)
(if (file-accessible-directory-p str)
(progn
(setq exec-path (cons str exec-path))
;;(setenv "PATH"
;;	  (concat str ":" (getenv "PATH")))
))))
'("/usr/local/bin" "/Applications/pTeX.app/teTeX/bin"))

Google 検索

My Google   Yahoo

Microsoft

ファンサイト