SNMP GET
WebNMS
SNMP APIライブラリ【 英語版 】
ネットワーク管理SNMP開発ツール
サンプル1 : SNMP Getリクエスト
ここではSNMP Get および GetNext操作を実行するための簡単なアプリケーションを開発する手順を説明します。 ビーンコンポーネントを含むハイレベルAPIを使用することでより簡単にアプリケーションやアプレットを開発することが可能です。
SNMP GET操作は、1つまたは2つ以上の値を管理エージェントのMIBから取得します。
GetNext操作は同様に管理エージェントのオブジェクトツリー上での次のオブジェクトを取得します。
これらの操作には、エージェントが存在するホスト名および取得するOIDを指定する必要があります。
SNMPについて詳しく知りたい方は、SNMPとはを参照して下さい。
まずはじめに、com.adventnet.snmp.beans パッケージをインポートします。
import com.adventnet.snmp.beans.*; |
Javaアプリケーションに必要なクラスおよびstatic mainメソッドを定義します。
public class SnmpGet { public static void main(String args[]) { |
コマンドラインからの入力としてホスト名とOIDを取得します。
if(args.length < 2) { System.out.println("Usage: java SnmpGet hostname OID" ); System.exit(0); } String remoteHost=args[0]; |
SNMP操作のためにSnmpTarget ビーンを使用します。 ハイレベルAPIであるSnmpTarget ビーンは数多くのSNMP操作やMIBに関連した機能を提供しています。 ビーンはJavaアプリケーションやJavaアプレット内でSNMPリクエストを送信するために、使用します。
SnmpTargetの使用には、SnmpTargetビーンのインスタンスを作成します。
SnmpTarget target = new SnmpTarget(); |
アプレットの場合には、SNMP APIやJDKのパッケージと一緒にjava.applet パッケージをインポートする必要があり、SnmpTargetのコンストラクタにAppletインスタンスを渡します。
SnmpTarget target = new SnmpTarget(this); |
SnmpTarget ビーンはマルチバーバインドリクエスト(複数OIDのリクエスト)をサポートしております。
単一OIDのリクエストには、target.setObjectId()
または target.setSnmpOID()が使用可能です。
複数OIDのリクエストには、target.setObjectIDList()
または target.setSnmpOIDList()が使用可能です。
ここでの例では、コマンドラインからホスト名(remoteHost)とOID(oids)を取得します。
target.setTargetHost(remoteHost); String oids[] = new String [args.length - 1]; for (int i=1; i < args.length; i++) oids[i-1]=args[i]; target.setObjectIDList(oids); |
ここではsnmpGetListメソッド() を用いてGetリクエストを送信し、結果を表示します。 リクエストタイプと応答結果をどのような形式で取得するかにより、SnmpTargetクラスの様々なメソッドを使用することができます。
String result[] = target.snmpGetList(); for (int i=0; i < oids.length;i++) { System.out.println("OBJECTID: "+target.getObjectID(i)); System.out.println("Response:"+result[i]); } |
SnmpTarget クラスのreleaseResources() メソッドはセッションをクローズするために呼ばれます。SnmpTargetインスタンスへの参照が無くなると、ガーベジコレクタがfinalize()メソッドを呼び出します。SnmpTargetクラスのfinalize()メソッドでは、releaseResources() メソッドを呼び出し、セッション(SnmpSession)をクローズします。この時、他のSnmpTargetインスタンスが同一のセッションを使用している場合は、最後のSnmpTargetインスタンスのfinalizeメソッドが呼び出された場合にのみ、セッションがクローズされます。
最後に、プログラムをコンパイルして、結果を表示します。 コマンドラインに正しいホスト名とOIDを与えて下さい。
同様なアプリケーションも簡単に作成することができます。例えば、SNMP GetNext操作を行うためには、target.snmpGetList() を target.snmpGetNextList() に変えるだけで実行可能です。その他の部分は同じです。
このサンプルでは、エージェントアドレスを指定するために target.setTargetHost(String)() を使用しています。 以下のようなメソッドを使用して、SNMPパラメータを指定することが可能です。
- target.setCommunity() - コミュニティ
- target.setTargetPort() - ポート番号
- target.setSnmpVersion() - バージョン
- target.setRetries() - リトライ回数
- target.setTimeout() - タイムアウト値
ソース一覧
機能 | ソース |
---|---|
SNMP Get |
|
SNMP GetNext |