もう少し調べたいけどとりあえず書いとこう。
Nagios の check_vnc
中身は python スクリプトですね。
VNCSnapshot をインストール(解凍して /usr/local/bin にコピー。動作確認 → VNC のスクリーンショットの保存が出来る!!)
で、check_vnc スクリプトを動作させる。ちょっと古くて心配だったけど下記修正で動作する。
こんな感じでエラー。
UNKNOWN: 'vncsnapshot' cannot be found in path. Please install the vncsnapshot program or fix your PATH environment variable
vncsnapshot への PATH が通ってない?
os.environ[‘PATH’] = ‘/usr/local/bin’ で PATH を設定。
修正箇所
[root@nagios libexec]# diff -Nur check_vnc_org check_vnc --- check_vnc_org 2010-01-12 17:34:09.000000000 +0900 +++ check_vnc 2010-01-12 17:40:58.000000000 +0900 @@ -43,6 +43,8 @@ __title__ = "Nagios Plugin for VNC" __version__ = 0.4 +os.environ['PATH'] = '/usr/local/bin' + DEFAULT_TIMEOUT = 10 # The standard VNC port DEFAULT_PORT = 5900
この修正で動作しました。
nagios ユーザで Login してシェルからスクリプトを実行するとエラーなし。nagios ユーザで実行してるつもりなのに、うーん。
スクリプト内で PATH と ユーザを表示するようにちょっと手を加える。
[root@nagios libexec]# diff -Nur check_vnc_org check_vnc --- check_vnc_org 2010-01-12 17:34:09.000000000 +0900 +++ check_vnc 2010-01-14 11:51:04.000000000 +0900 @@ -26,7 +26,8 @@ CRITICAL = 2 UNKNOWN = 3 -import os +#import os +import pwd, os import re import sys import signal @@ -43,6 +44,8 @@ __title__ = "Nagios Plugin for VNC" __version__ = 0.4 +#os.environ['PATH'] = '/usr/local/bin' + DEFAULT_TIMEOUT = 10 # The standard VNC port DEFAULT_PORT = 5900 @@ -65,6 +68,9 @@ else: # This one is intentionally different print "UNKNOWN: %s" % message + print os.environ['PATH'] + print pwd.getpwuid(os.getuid())[0] + sys.exit(UNKNOWN)
と、こんなメッセージが出るので。
UNKNOWN: 'vncsnapshot' cannot be found in path. Please install the vncsnapshot program or fix your PATH environment variable /sbin:/usr/sbin:/bin:/usr/bin nagios
PATH → /sbin:/usr/sbin:/bin:/usr/bin
user → nagios
ということらしい。
nagios ユーザはともかく、この PATH ってどこで設定してるんだろうか…。
/etc/rc.d/rc.sysinit の中で定義、
/etc/init.d/functions
# Set up a default search path.
PATH=”/sbin:/usr/sbin:/bin:/usr/bin”
export PATH
で定義してあるっぽいけどなぁ。
python と PATH 。
あとで調べよう。みんなのPython に載ってるかしら。。