※写真と本文は関係ありません。
もう少し調べたいけどとりあえず書いとこう。
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 に載ってるかしら。。