前のトピック: ファイル システムのモニタ

次のトピック: ログ ファイルのモニタと、電子メールによる通知の送信

SNMP を介した拡張スクリプトの再設定

これらのスクリプトを使用すると、SNMP を使用してリモートで再設定できる拡張スクリプトを使用して、任意のシステムに ping できます。 そのため、sysedge.cf や他のカスタム スクリプトを編集する必要がありません。 任意の MIB ブラウザまたは SystemEDGE に用意された event snmpset ユーティリティから SNMP SET を使用することで、監視するシステムの名前を設定または変更できます。 拡張変数を読み取ると、ping 情報を含む文字列が取得されます。

SNMP を介して拡張スクリプトを再設定する方法

  1. sysedge.cf 設定ファイルに以下の行を追加して、SystemEDGE を再起動します。
    extension 31 octetstring readwrite '/opt/CA/test/ping.sh' (UNIX, Linux)
    extension 31 octetstring readwrite 'c:¥test¥ping.bat' (Windows)
    
  2. 拡張ディレクティブで指定したディレクトリにスクリプト(ping.sh、ping.bat)をコピーします。
  3. ping のターゲットを設定に、読み取り要求を入力します。
    C:¥SystemEDGE¥bin>.¥snmpget -o 1.3.6.1.4.1.546.14.31.0
    1.3.6.1.4.1.546.14.31.0 Ping target must be set first
    

    エラー メッセージが表示されます。

  4. my-sles3 を、ping するシステムに設定します。
    C:¥SystemEDGE¥bin>.¥snmpset -c private -o 1.3.6.1.4.1.546.14.31.0 -s my-sles3
    1.3.6.1.4.1.546.14.31.0 my-sles3
    
  5. 変数を読み取ることでシステムに ping します。
    C:¥SystemEDGE¥bin>.¥snmpget -o 1.3.6.1.4.1.546.14.31.0
    1.3.6.1.4.1.546.14.31.0 my-sles3 is alive
    

スクリプトは、拡張にインデックス 31 があることを確認します。 ただし、この確認は技術的に必要でないため削除できます。その結果、拡張スクリプトは任意のインデックスに割り当てることができます。

スクリプト ping.bat および ping.sh により、設定情報が一時ファイルに格納されます。

UNIX および Linux の ping スクリプト

#!/bin/sh
#
# ping.sh example extension script 
#
# A simple example script for the SystemEDGE agent extension group.
# This script implements a "Ping" SNMP MIB variable whereby
# Sets to this variable indicate what system should be pinged
# and Gets to this variable cause the Ping to occur and the 
# output to be returned as an OctetString.
#
# For reference, the following are passed as parameters by the SystemEDGE
# Agent. They are not used in this script.
# 
# The Extension Group Leaf Number
LeafNumber=$1
# The SNMP Operation: GET, GETNEXT, or SET
Operation=$2
# The value if a SET Operation
SetValue=$3

# determine which ping program to use
OSNAME=`/bin/uname -r`
OSTYPE=`/bin/uname -s`

if [ "$LeafNumber" = "31" ]; then

   # setup who we should be pinging
   if [ "$Operation" = "SET" ]; then
      echo $SetValue > /tmp/sysedge.ping.target
      echo $SetValue 
   fi

   if [ "$Operation" = "GETNEXT" ];  then
      Operation="GET"
   fi

   if [ "$Operation" = "GET" ]; then
      if [ ! -f /tmp/sysedge.ping.target ]; then
         echo "Ping target must be Set first"
         exit 0
      fi

      case $OSTYPE in
        Linux)
		/bin/ping -c 1 -q -n `/bin/cat /tmp/sysedge.ping.target`
		;;

        HP-UX)
		/etc/ping `/bin/cat /tmp/sysedge.ping.target` -n 1
		;;
        AIX)
		/etc/ping -c 1 `/bin/cat /tmp/sysedge.ping.target`
		;;
	SunOS) 
		/usr/sbin/ping `/bin/cat /tmp/sysedge.ping.target` 2
		;;
  
	*) 
	      case $OSNAME in
		6.*)
		  /usr/etc/ping -c 1 -q -n `/bin/cat /tmp/sysedge.ping.target` 

		  # IRIX PING は非常に面倒です。マシンがアライブかどうかを示している出力を 1 行取得できるのですが、
		  # 取得できているようには見えないからです。
		  # 出力を捕捉し、最後の行のみ echo するのも 
		  # 1 つの方法です。
		  ;;

		5.*)
		  /usr/sbin/ping `/bin/cat /tmp/sysedge.ping.target` 2
		  ;;

		4.*)
		  /usr/etc/ping `/bin/cat /tmp/sysedge.ping.target` 2
		  ;;

		*)
		  echo 「システム用の PING コマンドを判断できません」 $OSNAME
		  exit 0     
		  ;;
	      esac
	esac
   fi
fi

Windows 用 PING スクリプト

@ECHO OFF
@rem ping.bat のサンプル拡張スクリプト 
@rem
@rem SystemEDGE エージェント拡張グループ用の簡単なスクリプト例。
@rem このスクリプトは、SNMP MIB 変数、「Ping」を実装します。実装することにより、
@rem この変数に対する Set は、PING する必要があるシステムを示し、
@rem この変数に対する Get は、PING を発生させ、 
@rem 出力を OctetString として返します。
@rem
@rem 参考までに、SystemEDGE エージェントによって、以下がパラメータとして
@rem 渡されます。
@rem 

@rem 拡張グループのリーフ番号
set LeafNumber=%1%

@rem SNMP の操作: GET、GETNEXT、または SET
set Operation=%2%

@rem SET 操作の場合の値
set SetValue=%3%

@rem 使用する必要がある PING コマンド
set PING=%SystemRoot%¥system32¥ping.exe

@rem 後で使用できるよう、「環境」内のターゲットを
@rem 変数 SYSEDGE_PING_TARGET を使用して保存します。

if not %LeafNumber% == 31 goto fi

   @rem Set の場合は、値があることを確認し、
   @rem 保存してから、値を STDOUT に echo します。
   @rem これは、拡張コードをわかりやすくするためです。
   if %Operation% == SET if !%SetValue%==! goto error
   if %Operation% == SET @echo set SYSEDGE_PING_TARGET=%SetValue% > %TMP%¥pingtgt.bat
   if %Operation% == SET echo %SetValue%
   if %Operation% == SET goto fi

   @rem スクリプトを実行して、ターゲット名を回復します。
   call %TMP%¥pingtgt.bat
   if !%SYSEDGE_PING_TARGET% ==! goto error

   @rem %SYSEDGE_PING_TARGET% の PING を echo
   %PING% -n 1 -w 250 %SYSEDGE_PING_TARGET% > nul

   if ERRORLEVEL 1 echo %SYSEDGE_PING_TARGET% not alive
   if not ERRORLEVEL 1 echo %SYSEDGE_PING_TARGET% is alive

:fi
goto exit

:error 
echo PING ターゲットを最初に設定する必要があります。

:exit
rem command.com には欠陥が多いので、クリーンアップを実行
set PING=
set Operation=
set LeafNumber=
set SetValue=