





















|
    
[トップに戻る]
[留意事項]
[ワード検索]
[過去ログ]
[管理用]
 | net-snmp-5.3.2.2 を使用して C 言語の簡単プログラムから TRAP 送信を使用として困っています。
プログラム概要は以下です。(以下は問題再現用のテストの抜粋)
struct snmp_session vSession; struct snmp_session * pSession; struct snmp_pdu * pPdu; oid base_name[MAX_OID_LEN]; int base_name_length; oid name[MAX_OID_LEN]; int name_length; char * pOid; char cType; char * pValue;
pCommunity = "public"; memset((char*)&vSession, 0, sizeof(vSession)); init_snmp("ec"); snmp_sess_init( &vSession ); vSession.version = SNMP_VERSION_1; vSession.peername = "127.0.0.1"; vSession.community = pCommunity; vSession.community_len = strlen( pCommunity ); vSession.callback = snmp_input; vSession.callback_magic = NULL; vSession.remote_port = SNMP_TRAP_PORT; netsnmp_ds_set_int( NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_DEFAULT_PORT, SNMP_TRAP_PORT );
pSession = snmp_open( &vSession ); pPdu = snmp_pdu_create( SNMP_MSG_TRAP ); name_length = MAX_OID_LEN; pBaseOid = ".1.3.6.1.4.1.????.8501"; snmp_parse_oid( pBaseOid, name, &name_length ); nSize = sizeof(oid) * name_length; pPdu->enterprise = (oid *)malloc( nSize ); memcpy( pPdu->enterprise, (char *)name, nSize ); pPdu->enterprise_length = name_length; pdu_in_addr_t = (in_addr_t *)( pPdu->agent_addr ); *pdu_in_addr_t = get_myaddr(); pPdu->trap_type = 6; pPdu->specific_type = 1; pPdu->time = get_uptime(); pOid = ".8501.1.4"; snmp_parse_oid( pOid, name, &name_length ); cType = 's'; pValue = "xxxx"; snmp_add_var( pPdu, vOid, vOid_len, cType, pValue ); nRet = snmp_send( pSession, pPdu ); printf("%d = snmp_send()\r\n", nRet ); if ( !nRet ) { printf( " snmp_errno=%d, s_snmp_errno=%d, s_errno=%d\r\n", snmp_errno, pSession->s_snmp_errno, pSession->s_errno ); snmp_perror("snmp_send()"); snmp_free_pdu( pPdu ); 略 }
実際の現象 snmp_send が以下の理由で失敗します。
0 = snmp_send() snmp_errno=-11, s_snmp_errno=-11, s_errno=0 snmp_send(): Error building ASN.1 representation (Can't build OID for variable)
調査 プログラム中盤の pOid = ".8501.1.4"; を pOid = "".1.3.6.1.4.1.????.8501.1.4"; に修正すると送信可能になります。(上記 ???? は値を伏せてあります)
この Trap 送信は 10 年近く前には動いていて rhel5.7 と net-snap-5.3.2.2 で発生しました。 rhel4 時代は問題なかったと 認識しております。
このあたりの V1 での Trap 送信時の OID の取り扱い方を ご存じありませんでしょうか。
以上、よろしく御願い致します。
|
| Re: V1 での Trap 送信プログラム カワモト - 2012/01/11(Wed) 18:06 No.4610 | |
|
|
 | すみませんソース簡略化上で細かなミスがあります。変数の名称違いなどは不問で御願い致します。 |
| Re: V1 での Trap 送信プログラム カワモト - 2012/01/12(Thu) 16:36 No.4615 | |
|
|
 | すみません。誤解でした。原因は他にありました。お騒がせして申し訳ありませんでした。 |
|
 | SNMPによる監視ソフト開発に携わるものです。 以下、恐縮ですがご教授ください。
net-snmpを使用してsnmpgetする場合、送信元アドレスまたはデバイス名(eth0など)の指定は出来ますでしょうか? net-snmpが動作するOSのルーティングテーブルの更新が許可されておらず、動的にsnmpget送信時に送信元アドレスまたはデバイス名を指定したい為となります。 また、通常のnet-snmpのオプション指定では不可の場合、ソースの改造により実現可能しょうか?
|
| Re: snmpgetの送信元アドレスまたはデバイス名の指&... YMI - 2011/12/14(Wed) 12:17 No.4594 | |
|
| Re: snmpgetの送信元アドレスまたはデバイス名の指&... T.K - 2011/12/19(Mon) 16:05 No.4598 | |
|
|
 | ご連絡遅くなり申し訳ございません。 ご回答ありがとうございました。参照させていただきます。 |
|
 | はじめて投稿いたします。
Net-SNMP Libraryを使用して、以下のようにTrap送信処理をC++にて 実装しております。
netsnmp_session sesson = snmp_add(); netsnmp_pdu *pdu = pdu_create(); snmp_send(session, pdu );
この処理をアプリケーションで実装しており、このアプリ起動シーケンス内で シーケンシャルに連続で3つTrapを送信しているのですが、1つ目が通知されない 現象が発生しました。(通知元のwiresharkにて送信されてないことを確認) 発生頻度は5割です。1つ目のTrapが抜けた場合でも、あとに続く通知 (2つ目、3つ目)の送受信は行われます。
上記処理のsnmp_send()の直前で、1秒sleepさせたところ、Trap抜けは発生しなく なりました。
この原因につきまして、考えられることはございますでしょうか?
少ない情報ですが、ご教授頂けたらと思い投稿させて頂きました。 よろしくお願いいたします。
|
| Re: SNMP v3 Trap抜けについて YMI - 2011/06/27(Mon) 16:03 No.4452 | |
|
|
 | 残念ながら、これだけの情報だとわかりません。 (1)OSは何でしょうか?Linux or Windows (2)送信元のWireSharkとは、TRAPを送信しているPCと同じマシン上で WireSharkでモニタしているという意味でしょうか? それだと、自分で送信したパケットをキャプチャできない場合もある かもしれません。
|
| Re: SNMP v3 Trap抜けについて M.R - 2011/06/28(Tue) 08:43 No.4458 | |
|
|
 | 返信ありがとうございます。 情報が不足して、申し訳ございません。
(1)OSは、RedHatEnterprise Linux Server release5.5となります。 (Trap通信先、通信元同様) (2)Trapを送信しているLinux上(送信元)で、キャプチャしております。 同様に送信先でもWireSharkで確認していますが、受信してないこを 確認しております。
お手数ですが、ご教授の程、よろしくお願いいたします。 |
|
 | はじめて投稿いたします。SNMP初心者です。 お世話になります。
TRAPが受信できずに悩んでいます。
以下のような環境にて、HostAからHostBへTRAPを送信しているのですが、 受信している気配がなくログ(/var/log/messages)に出力されません。
■HostA OS:CentOS 5.5 64bit net-snmp:5.3.2.2-9.el5_5.1
・テストTRAP snmptrap -v 2c -c public <HostBのIP> '' .1.3.6.1.4.1.6101.141 .1.3.6.1.4.1.6101.141.1 s "Test Message"
■HostB OS:CentOS 5.5 64bit net-snmp:5.3.2.2-9.el5_5.1
/etc/snmp/snmptrapd.conf(/usr/share/snmp/snmptrapd.confの場合も実施済み) ---------------------------------------------- authCommunity log,execute,net public traphandle default /bin/bash /etc/snmp/snmp.sh
----------------------------------------------
HostBにてtcpdumpを実行し、パケットがHostBまで来ていることを確認しています。 何かしらの理由ではじかれているならばその旨がログに出ると思うのですが何も出力されません。
また、HostAにて以下のような設定をし、HostA内で自サーバ宛にTRAPを送信した場合、 TRAPはHostBへ転送されていることをtcpdumpで確認しています。(HostBのログには出ない)
/etc/snmp/snmptrapd.conf ---------------------------------------------- authCommunity log,execute,net public forward default <HostBのIP>
----------------------------------------------
HostBでTRAPを受信できない原因は何か考えられますでしょうか?
初歩的な質問で申し訳ありませんが、何卒ご教授の程よろしくお願い致します。 |
| Re: snmptrapの受信について YMI - 2011/06/27(Mon) 16:08 No.4453 | |
|
|
 | ファイヤウォールなどが設定されていませんか? あと、 HostBからHostBに送信したTRAPはどうなりますか?
TWSNMPマネージャで受信してみれば、送信側か 受信側か切り分けできると思います。 |
|
 | いつも便利に使わせていただいております。初めて投稿いたします。 TWSNMP Ver.3.4.2の[ノードプロパティ]-[一般設定]タブの [ポーリング周期]-[SNMPモード]において、 「デフォルト」を選ぶと、Community/Userの文字列が無視され、 強制的に"public"となってしまうのですが、これは仕様でしょうか? (SNMPv1にすると、Community/Userの文字列が使用されます。) ご存知の方、ご教授をお願い致します。 |
| Re: SNMPモード YMI - 2011/06/15(Wed) 06:41 No.4435 | |
|
|
 | TWSNMPマネージャの質問は別の掲示板があります。 「デフォルト」は、MAPのプロパティに設定された SNMPモード、Communityなどを使用するという意味です。 ですから、ご指摘の動作は、仕様です。 |
| Re: SNMPモード 不勉強者 - 2011/06/21(Tue) 17:13 No.4440 | |
|
|
 | ご回答ありがとうございました。 疑問が解消致しました。 また、板違い、失礼しました。 |
|
 | はじめて投稿させて頂きます。 宜しくお願い致します。
net-snmp5.3系で、ssCpuRawIdleを使用してCPU使用率を %で算出したいと考えておりますが、その場合の計算式は以下で正しいでしょうか?
<計算式> 100-([今回取得した(ssCpuRawIdle)]-[前回取得した(ssCpuRawIdle)])/監視間隔/コア数 ※ssCpuRawIdleの単位は1tick(10ms)なので、100を乗算しなくても単位を 無視して計算すれば、%での結果となると考えております。
また、上記が正しい場合ですが、現在上記の方法で値を求めると 200前後の高い値となりますが、これは何故なのでしょうか・・。
計算式を含め、私の認識に間違い等があればご指摘、ご教示を 頂けますでしょうか。
宜しくお願い致します。
|
| Re: ssCpuRawIdle計算式について YMI - 2011/06/15(Wed) 21:21 No.4436 | |
|
|
 | お世話になります。
evntwin.exeからのTrap受信について、イベントログの内容が、表記どおりではなく、 16進数表記で表示されます。
例えば、Symantecの「手動 LiveUpdate が新しいウイルス定義がないことを確認しました。」
というログが、
「0D 0A 0D 0A 0D 0A 8E E8 93 AE 20 4C 69 76 65 55 70 64 61 74 65 20 82 AA 90 56〜」
と16進数表記で表示されてしまいます。
MIBでは、DisplayString型でオブジェクト定義していますが、正しく表記させる方法を ご教授ください。
なお、TWSNMPはVer.4.11.7です。
|
| Re: evntwin.exeからのTrap受信について YMI - 2011/06/03(Fri) 12:01 No.4422 | |
|
|
 | 拡張MIBの定義ファイルをTWSNMPに読み込ませないと TRAPに付加されたMIBがDisplayString型か判断できません。 読み込ませてますか? |
| Re: evntwin.exeからのTrap受信について JNK - 2011/06/03(Fri) 14:18 No.4423 | |
|
|
 | 下記の手順で読み込ませているつもりですが、手順的に問題ありますでしょうか。
@メニューの[SNMP管理]>[MIBツール]をクリック
A表示された[MIBツール]ウィンドウの[読み込んだMIBファイル]にある[追加]をクリック
B作成したMIBファイルを選択する
上記設定で、[読み込んだMIBファイル]の一覧内に追加したMIBファイルが表示され、[MIBツリー]をクリックすると定義したMIBのツリーが正しく表示されます。 また、[MIB読込エラー]には、特にエラーは出力されません。
なお、作成したMIBは下記のとおりです。 「WSHeventID0」というTrapの「eventText」という値にて事象が発生しています。
---------------(MIBファイル ここから)------------------------------ EVENTLOG-MIB DEFINITIONS ::= BEGIN
IMPORTS OBJECT-TYPE, enterprises FROM SNMPv2-SMI TRAP-TYPE FROM RFC-1215;
microsoft OBJECT IDENTIFIER ::= { enterprises 311 } software OBJECT IDENTIFIER ::= { microsoft 1 } eventlog OBJECT IDENTIFIER ::= { software 13 } evntagent OBJECT IDENTIFIER ::= { eventlog 1 }
eventData OBJECT IDENTIFIER ::= { evntagent 9999 }
WSH OBJECT IDENTIFIER ::= { evntagent 3 87 83 72 }
eventText OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "The event message text. The message data is populated with the variable data below." ::= { eventData 1 }
〜〜(中略)〜〜
WSHeventID0 TRAP-TYPE ENTERPRISE WSH VARIABLES { eventText, eventUserId, eventSystem, eventSource, eventCategory, eventVar1, eventVar2, eventVar3, eventVar4, eventVar5, eventVar6, eventVar7, eventVar8, eventVar9, eventVar10, eventVar11, eventVar12, eventVar13, eventVar14, eventVar15 } DESCRIPTION "WSH eventID 0" ::= 0
〜〜(後略)〜〜
END ---------------(MIBファイル ここまで)------------------------------
以上、何卒、宜しくお願い致します。
|
| Re: evntwin.exeからのTrap受信について YMI - 2011/06/03(Fri) 17:38 No.4424 | |
|
|
 | (1)IMPORTSのところにDisplayStringがないので、型が 判断できないのかもしれません。
(2)文字コードを判定できない 0D 0A 0D 0A 0D 0A 8E E8 93 AE 20 4C 69 76 65 55 70 64 61 74 65 20 82 AA 90 56 の文字コードが判定できないのかもしれません。 SJIS、UTF−8などの判定してだめなものは、そのまま表示しています。 |
| Re: evntwin.exeからのTrap受信について JNK - 2011/06/06(Mon) 12:03 No.4425 | |
|
|
 | ご回答ありがとうございます。
下記のように、DisplayStringを定義することで、解決できました!
============================== IMPORTS OBJECT-TYPE, enterprises FROM SNMPv2-SMI DisplayString FROM SNMPv2-TC TRAP-TYPE FROM RFC-1215; ==============================
お手数をお掛けしました。 |
|
 | 初めまして。 net-snmp-5.1.2-18を利用し、snmpd.confで以下設定をしています。
#パーティション閾値設定 disk / 80% disk /var 80% (Trapテストのために閾値を大きく設定しています)
#monitor設定 notificationEvent dskErrorTrap dskDevice dskPath dskErrorMsg dskErrorFlag monitor -u _internal -r 10 -e dskErrorTrap -I "disk / error" dskErrorFlag.1 != 0
インデックス毎にエラー判定をしたいため、Iオプションを使用してdskErrorFlag.1 != 0と しておりますが、Trapが飛びません。
インデックスとIオプションを外し、dskErrorFlag != 0とすればTrapが飛びますが、 パーティション毎に判定したいため有用ではありません。
snmpd.confのmanページを見ましたが、オプションの使用方法が誤っているのでしょうか。 |
| Re: monitorコマンドでのTrap送出 YMI - 2011/05/25(Wed) 16:16 No.4419 | |
|
|
 | net-snmp-5.1.2-18が古いのかもしれません。ーIオプションがない? manページはこれに付属するものでしょうか? |
| Re: monitorコマンドでのTrap送出 とも - 2011/05/26(Thu) 09:34 No.4420 | |
|
|
 | manページはネットで検索したものを確認していました。 manコマンドで確認したところIオプションが載っていませんでした・・・ お手数おかけしました。
|
|
 | いつも拝見させていただいております。
monitorコマンドにおけるsnmptrapに関して質問させていただきます。 snmpd.confで以下設定をします。 disk /boot 83000 monitor -u _internal -r 10 -I "/boot is less than 83MB " dskErrorFlag.1 != 0
上記設定時に/bootの残容量が83MB以下になった場合 trapが上がったことは確認できました。
しかし、その後10秒後に再度snmptrapが上がる想定でしたが 上がっておりません。 ※/bootの残容量は83MB以下のままです。
trapにより回復したことも検知したい為 異常時にはsnmptrapが上がり続けるか 回復した際にもsnmptrapで回復通知が上がるようにしたいと考えております。
上記は可能でしょうか。 よろしくお願いいたします。 以上です。 |
| Re: monitorコマンドにおけるtrapに関して YMI - 2011/05/19(Thu) 14:37 No.4417 | |
|
|
 | たぶん、TRAPを送信するのは、状態の変化時だけだと思います。 monitor -u _internal -r 10 -I "/boot is not less than 83MB " dskErrorFlag.1 == 0 の行を追加すればどうでしょうか?
|
|
 | 初めまして ソースを眺めているのですが、全く不明なためお聞きいたします。
何らかのTrapが上がるような設定で、(たとえばCPU使用率) I/Fが1つしかないシステムで、そのLinkがDownしている時に飛び先がないため 何らかのログを残すことになると思いますが、そのロジックを探しています。 イメージとしては どこかに QUEUEされて、非同期に取り出し syslogに書き出す と思っておりますが、具体的なコード箇所を教えていただければ幸いです。
|
| Re: I/Fが Downしている時にTrapできない場合の処理 YMI - 2011/05/19(Thu) 14:36 No.4416 | |
|
|
 | LINKがダウンしていて、TRAPが送信できない状況は、 UDPで送信する場合、判断できないと思います。 TRAPの送信先に、自分(127.0.0.1)を設定しておいて、 自分でTRAP受信したものをsyslogに記録してはどうですか? |
|
 | 初めて質問させていただきます。 SNMPを階層的に使用することを検討しております。
システム内の各グループをサーバの中に実装したSNMPのマネージャで取りまとめ、 その情報を更に上位のSNMPのマネージャに送信するイメージです。
上記内容を実現しようとしますと、一つのサーバの中に SNMPマネージャとエージェントを同居する必要がありますが、 そのような事は可能でしょうか?
以上、宜しくお願い申し上げます。 |
| Re: SNMPのマネージャとエージェントについて YMI - 2011/05/19(Thu) 14:32 No.4415 | |
|
|
 | だいぶ時間がたってしまったので、遅いかもしれませんが https://www.ietf.org/mailman/listinfo/disman という仕組みがあります。 これは、NET-SNMPにも実装されていると思います。
|
|
 | 初めまして。 SNMP 開発の際、いつも参考にさせていただいております。
現在当方にて開発中の、某ネットワークシステムにおいて メインユニットとサブユニットが存在し、 メインユニット上で Net-SNMP(プロキシエージェント)が、 サブユニット上で、独自実装の SNMP エージェントが動いています。
基本的に、メインユニットは ・SNMP マネージャから SNMP の各種リクエストを受けると それをサブユニットに転送し、 ・サブユニットから返ってきたレスポンスを マネージャに転送する というものですが、
マネージャから受けたリクエストが GetBulk の時、 Net-SNMP プロキシエージェントは 「GetBulk リクエストを、等価な複数の GetNext リクエストに分解し サブエージェントに転送する」 という動作になっているようです。
たとえば、マネージャより "snmpbulkget -v 2c -C r50 -c public 192.168.1.100 mibA" コマンドを実行した場合、 オブジェクト「mibA」を起点として、50 往復の GetNext のやりとりが メインユニット(プロキシ)<-> サブユニット(エージェント)間で 行われてしまいます。
現在、SNMP 通信の高速化を検討しており GetBulk をわざわざ複数の GetNext に分割転送するのではなく、 GetBulk は GetBulk のまま、サブユニット(エージェント)に転送できれば かなりの高速化となる、と考えておりますが・・・
Q1. そもそも、これは実現可能でしょうか? Q2. 可能な場合、 (1) Net-SNMP(snmpd.conf?) に何らかの設定変更をすればよいでしょうか? (2) あるいは、Net-SNMP のソースコードに手を加える必要があるでしょうか? ((2) だとしたら、これは非常に困難なのではないかと危惧しております)
以上、宜しくお願い致します。 |
| Re: Net-SNMP のプロキシエージェントにおける GetB... YMI - 2011/04/21(Thu) 07:15 No.4406 | |
|
|
 | 最近忙しくて、返事が遅くなりました。
Q1. そもそも、これは実現可能でしょうか? Q2. 可能な場合、 (1) Net-SNMP(snmpd.conf?) に何らかの設定変更をすればよいでしょうか? (2) あるいは、Net-SNMP のソースコードに手を加える必要があるでしょうか?
以下の条件がそろえば可能だと思います。 (1)サブユニットのエージェントがGetBulkに対応している。 SNMP V2以上に対応している必要があります。 (2)NET-SNMPのProxyでサブユニットへのリクエストは V2CまたはV3で行う。 V1ではだめだと思います。
残念ですが、これで動作するかは未確認です。
ただ、GetBulkに変えても、メインとサブ間の回線が 極端に遅い場合でないと それほど高速化にはならないようにも思います。
|
| Re: Net-SNMP のプロキシエージェントにおける GetB... Y.Yagi - 2011/04/25(Mon) 18:06 No.4408 | |
|
|
 | お忙しい中、ご回答ありがとうございました。 GetBulk に変えても必ずしも大きな効果は期待できない、という件についても 承知しました。
なお、 > (1)サブユニットのエージェントがGetBulkに対応している。 > SNMP V2以上に対応している必要があります。 > (2)NET-SNMPのProxyでサブユニットへのリクエストは > V2CまたはV3で行う。 V1ではだめだと思います。 この2つの条件は、いずれも満たしています。
済みませんが下記について再度質問させていただきます。
> Q2. 可能な場合、 > (1) Net-SNMP(snmpd.conf?) に何らかの設定変更をすればよいでしょうか?
GetBulk 絡みの snmpd.conf の設定としては、例えば
- maxGetbulkRepeats <NUM> - maxGetbulkResponses <NUM>
があり、これで GetBulk の最大リピート数やレスポンス数の上限を設定できますが
- notConvertGetbulkToGetnext
↑このような設定項目は存在するでしょうか? (意図としては「GetBulk を GetNext に変換しない」ようにしたい)
> (2) あるいは、Net-SNMP のソースコードに手を加える必要があるでしょうか?
Net-SNMP は、bulk_to_next.c というソースファイル内で GetBulk を GetNext に変換しているようですが、 変換を行わないようにするには、ここに手を加える必要があるかな、と 漠然と考えております。 誰もトライした人が居ないようですが・・効果(高速化)が期待できないからでしょうか。
|
|
 | 初めての投稿をさせていただきます。
snmpd.confで以下設定をします。 #パーティション監視閾値設定 disk /boot 500000 disk / 20000000 disk /var/log 20000000
#monitor設定 notificationEvent evDkEntry memAvailSwap ssSwapIn monitor -u _internal -e evDkEntry -r 30 "dskErrorFlag" dskErrorFlag != 0
上記ではdskErrorFlagがdskErrorFlag.1 dskErrorFlag.2 dskErrorFlag.3の 3つとも1となるようになっており、 trapが上がるようになっております。
しかし、例えばdskErrorFlag.3のtrapが上がる際には 同時にnotificationEventで上げる情報もmemAvailSwap.3、ssSwapIn.3となってしまいます。 memAvailSwap.0にしかswapの情報は入っていない為memAvailSwap.0を指定して 情報を上げたいと思っております。 上記は可能でしょうか。
よろしくお願いいたします。 以上です。 |
| Re: notificationEventに関して YMI - 2011/04/21(Thu) 07:27 No.4407 | |
|
|
 | 初めまして、三田と申します。 prErrorFlagのインデックス番号について質問させてください。
OSはRHEL5.4、net-snmpのバージョンは5.3.2.2です。
snmpd.confに、以下のように2種類のプロセスを監視する設定をしております。 --- proc <プロセス1> 1 1 notificationEvent <イベント1> <OID> prName prErrMessage monitor -u _internaluser -r 10 -e <イベント1> "test1" prErrorFlag.1 == 1 proc <プロセス2> 2 2 notificationEvent <イベント2> <OID> prName prErrMessage monitor -u _internaluser -r 10 -e <イベント2> "test2" prErrorFlag.2 == 1 --- この設定ではトラップが送信されない状態です。
「prErrorFlag.インデックス番号」となっている箇所を「prErrorFlag」とすれば トラップは送信されるのですが、プロセス1のみを停止した時に、 インデックス番号を指定していないためイベント2にもひっかかってしまい、 トラップが2つ送信されてしまいます。
プロセス1、プロセス2を同時に停止した場合は、 合計4つのトラップが送信されてしまいます。
「prErrorFlag.i == 1」の箇所を「prErrorFlag.i != 0」にしても 同様の動きとなります。
「prErrorFlag」のインデックス番号を指定する方法が間違っていますでしょうか?
1プロセスに対して1つのトラップを送信する方法をご教授ください。
よろしくお願いいたします。
|
| Re: prErrorFlagのインデックス番号について YMI - 2011/01/26(Wed) 07:09 No.4382 | |
|
|
 | NET-SNMPのsnmpd.confのmonitorの説明を参照ください。 http://www.net-snmp.org/docs/man/snmpd.conf.html
オプションの説明に -I indicates that the monitored expression should be applied to the specified OID as a single instance. By default, the OID will be treated as a wildcarded object, and the monitor expanded to cover all matching instances. があります。 このオプションをつければ、意図した動作になると思います。
--- proc <プロセス1> 1 1 proc <プロセス2> 2 2 notificationEvent <イベント1> <OID> prName prErrMessage monitor -u _internaluser -r 10 -e <イベント1> "test2" prErrorFlag == 1 --- でもよいかもしれません。 |
|
 | 初めまして。SNMP初心者の、SNKと申します。 現在SNMPTrap受信をトリガーに、外部プログラム(exe)を キックさせたいと考えております。 Windows XPにて、net-snmp-5.5.0-1.x86.exeをインストール・設定し、 上記の目的は実現することができました。
しかし、外部プログラムが起動するまでの時間が長く、 どうにかできないものかと色々と調査していることろです。
何か設定等できますでしょうか? また、外部ファイル起動時にWait等しているのでしょうか?
初歩的で申し訳ありませんが、よろしくお願いいたします。 |
| Re: 外部ファイル起動時間について SNK - 2011/01/18(Tue) 17:53 No.4372 | |
|
|
 | すみません、自己解決いたしました。 また、ご教授いただく事もあるかと思います。 その際は宜しくお願いいたします。 失礼いたします。 |
|
 | 以下についてご教示ください。
redhatlinux(4.8)にnet-snmp-5.6.1をインストールしました。 起動後、localhostにsnmpwalkを行うと ”End of MIB” の1行しか表示されません。
ちなみにcom2secで指定した他の端末に関してはsnmpwalkができます。
何か設定があるのでしょうか? |
| Re: localhostのsnmpwalkができない YMI - 2011/01/08(Sat) 12:00 No.4369 | |
|
|
 | ローカルからのアクセスに関する設定が間違っているのだと思います。 com2secとかを使用せずに単純に rocommunity public とかで設定すれば、簡単に試験できると思います。 |
| Re: localhostのsnmpwalkができない 素人 - 2011/01/11(Tue) 15:52 No.4370 | |
|
|
 | 以下のようにsnmpd.confを設定しましたがまだ取得できません。 どの設定が間違っているのでしょうか?
<設定の抜粋>----------------------------------------------------------
############################################################################### # # AGENT BEHAVIOUR #
# Listen for connections from the local system only agentAddress udp:localhost:161 # Listen for connections on all interfaces (both IPv4 *and* IPv6) agentAddress udp:192.168.○○.○○:161,udp6:[::1]:161
############################################################################### # # ACCESS CONTROL #
# system + hrSystem groups only #view systemonly included .1.3.6.1.2.1.1 #view systemonly included .1.3.6.1.2.1.25.1 view view_all included .1
# Full access from the local host rwcommunity ○○ localhost # Default access to basic system info #rocommunity ○○ default -V systemonly
# Full access from an example network # Adjust this network address to match your local # settings, change the community string, # and check the 'agentAddress' setting above rwcommunity ○○ 192.168.○○.○○
# Full read-only access for SNMPv3 rouser authOnlyUser # Full write access for encrypted requests # Remember to activate the 'createUser' lines above #rwuser authPrivUser priv
# It's no longer typically necessary to use the full 'com2sec/group/access' configuration # r[ou]user and r[ow]community, together with suitable views, should cover most requirements
-----------------------------------------------------------------------
|
|
 | 下記のような感じでコマンドを実行してみました。 グラフは起動し、パラメータ等は問題ないのですが、ログが上手く書き出されません。。 パラメータ等おかしな所などないでしょうか?是非ご教示の程、お願い致します。
traffic.exe /IP=xxx.xxx.xxx.xxx /ComOrUser=public /SnmpMode=1 /Node=めいんすいっち /PollInt=3600 /Retry=1 /Timeout=1 /Index=10101 /LogCount=1 /LogFile=Log\ryuugasaki\%date:~-8,2%%date:~-5,2%%date:~-2,2%_TRAFFIC.log "C:\Program Files\TWISE\TWSNMP\traffic\めいんすいっち.trf" |
|
 | たびたび申し訳ありません。 困っています。どうか質問させてください。 Windows2008Server SP2 使用
現在「evntwin」を使い、トラップ対象を指定しようと思っています。 多くのWebページではtelnetを使った実験を推奨しております。 しかし私の環境ではイベントソースにTlntsvrフォルダが出現しない状態になっております。 telnetサービス自体はインストールし、正常に動いています。
「evntwin」から選択できるイベントソースに任意のフォルダやイベントを 追加する方法を教えていただけないでしょうか?
よろしくお願いいたします。 |
| Re: evntwinでのイベントソース追加 YMI - 2010/12/01(Wed) 06:27 No.4339 | |
|
|
 | >「evntwin」から選択できるイベントソースに任意のフォルダやイベントを >追加する方法を教えていただけないでしょうか? 残念ながらevntwinについて詳しくないのでわかりません。 evntwin使用方法は、この掲示板のSNMPに関する相談ではないように思います。 マイクロソフトにご相談下さい。
|
| Re: evntwinでのイベントソース追加 西岡 - 2010/12/01(Wed) 13:18 No.4340 | |
|
|
 | わかりました。 お忙しいなか、回答ありがとうございました。 |
|
 | はじままして。私は福岡で製造メーカーを営んでいます。社名はエイリツ電子産業といいます。 この度弊社のユーザーより弊社製品をSNMP対応にして、ネットワーク機器とあわせて監視をしてほしい という要望を受けました。弊社はソフト・ハードの開発を行っていますが、ネットワーク に関しては決して得意ではありません。そんな時御社のTWSNMPを見つけHPを見させていただいた ところ、「別の製品の開発を目的としたソースコード販売も可」や「カスタマイズ可」という 文言を目にしましたのでメールさせていただいています。ユーザーの要望は監視した機器の 監視項目毎に個別の動作(「印刷」「警報音鳴動」「他装置への通知」等々)なのですが、 こういった機能をTWSNMPをカスタマイズして製作できないかと検討しています。 具体的なカスタマイズの方法はこれから検討していきますが、まずは@ソースを購入する場合の費用、 A御社によるカスタマイズの可否を知りたいのです。
お手数おかけしますがご回答の程よろしくお願いいたします。
エイリツ電子産業株式会社 栗原 直樹 TEL 092-551-0231 FAX 092-551-1172
|
| Re: SNMP開発に関するご相談 YMI - 2010/12/01(Wed) 06:23 No.4338 | |
|
|
 | @ソースを購入する場合の費用、 100万円(税別)です。 A御社によるカスタマイズの可否を知りたいのです。 現在弊社ではカスタマズを受けていません。
|
|
 | 初めて質問させていただいております。
現在、Windows2008SP2を2台使いSNMPでのTrapの送受信をする仕組みを TWSNMPを使用し構築しようとしています。
まず初めに、telnetを使いSNMPサービスが起動できているかを確認したいのですが telnet PC1のIPアドレス 161 では接続できません。 ちなみに telnet PC1のIPアドレス 80 などは接続できています。
管理ツールのサービスから、SNMP Service・SNMP Trapを両方のPCにインストールし FWでは、SNMP関連の通信はすべて通すように設定しているのですが、うまくいきません。 他に考えられる原因として何かございませんか? いろいろな所を探しても情報を得ることができませんでした。 お力添えをどうかよろしくお願いいたします。
|
| Re: telnetによる接続確認 YMI - 2010/11/26(Fri) 22:05 No.4333 | |
|
|
 | SNMPは、UDPというプロトコルの上で動作します。 UDPはコネクションなしのプロトコルで、1パケット送信して、1パケットの応答を 受信するような使い方のものです。 telnetは、TCPというプロトコルで動作します。 telnetで161ポートに接続してもSNMPエージェントに接続できません。
TWSNMPだけを動作させれば、TRAPの受信は可能です。 SNMP Trapサービスを起動するとTWSNMPでTRAPの受信はできません。 |
| Re: telnetによる接続確認 西岡 - 2010/11/29(Mon) 13:38 No.4336 | |
|
|
 | YMIさん
ありがとうございました。 大変有益な情報でためになりました。 現在PortQryというUDPでも使えるツールを用いて通信を調べております。 SNMP Trapについきましては、マネージャ側・エージェント側 それぞれでサービスを停止いたしました。
また、再度ご質問させていただくこともあるかと思うので、 その際はよろしくお願いいたします。 |
|
 | WindowsServerにNet-snmpをインストールし、特定プロセスの数を取得したいと 考えています。 Net-snmpのマニュアルを見ると、snmp.confに次の一行を追記することが可能と 書かれていますがうまくいきません。 #Linuxでは一行追記でうまくいきます。
proc process-name [max-num] [min-num]
Windowsで特定プロセスの数を取得するためには何か特別な設定が必要なので しょうか? また、そもそもWindowsではそのようなことは不可なのでしょうか?
ご存知の方がいらっしゃいましたらご教示をいただけると助かります。 宜しくお願いいたします。
|
| Re: Windowsのプロセス数監視について YMI - 2010/10/25(Mon) 10:56 No.4320 | |
|
|
 | Windows版のsnmpd.confのサンプルに以下ように記載されています。
## Of the following Net-SNMP agent features ## NONE are supported on Net-SNMP-5.1.1 Win32 platforms ## Process checks "proc" config token ## Executable scripts "exec" config token ## Disk checks "disk" config token ## Load average checks "load" config token ## Extensible sections "exec" config token with shelltest ## Pass-through control "pass" config token
上記はWindows版でサポートしていないということです。 NET-SNMP 5.4.1のものですが、その後のバージョンでどうなったかは、 各バージョンの win32/EXAMPLE.conf.win32 を参照ください。
|
| Re: Windowsのプロセス数監視について かみ - 2010/10/29(Fri) 10:40 No.4324 | |
|
|
 | YMIさま、早速のご回答ありがとうございます。
コメントを読み間違えていたようです。 確かにNONEと書いてあります。
Winではダメなんですね。
ありがとうございました。 |
|
 | お世話になります。
AgentXで拡張MIB用のサブエージェント開発を行っているものです。 開発環境はLinuxOS Redhat5.5 Net-SNMPバージョンは 5.3 を使用しています。
サブエージェントでは以下コードのように初期化処理を行っているのですが
init_agent( "aaaaaaa" ); init_aaaaaaa(); init_snmp( "aaaaaaa" );
上記init_snmpを実行時、稀にunixソケット生成に失敗するケースがあります。 (サブエージェントとsnmpdデーモン間のコネクションに使用)
このような場合に、init_snmpの失敗を検知して対策を行いたいのですが init_snmpのリターンコードがvoid定義になっているので、 init_snmpの失敗を検知する方法がわかりません。
もし方法をご存知でしたらご教示をいただけると助かります。
宜しくお願いいたします。
|
| Re: init_snmpの失敗を検知する方法について YMI - 2010/09/20(Mon) 14:34 No.4294 | |
|
|
 | init_snmpの失敗を検知する方法は、わかりませんが なぜ、サブエージェントでinit_snmpの失敗を検知する必要があるのか 疑問です。
>上記init_snmpを実行時、稀にunixソケット生成に失敗するケースがあります。 >(サブエージェントとsnmpdデーモン間のコネクションに使用)
ソケットを作成するのは、マスターエージェント(snmpd)だと思います。 ですから、サブエージェントは作成に失敗しないと思います。
サブエージェントは、マスターエージェントに接続できない場合、 接続できるまでリトライを繰り返します。 あとから、マスターエージェントを起動しても接続できます。
マスターエージェントがUNIXソケットを作成できないことが 問題のように思います。 作成できない状況がなぜ発生するか調べるほうがよいかと思います。 |
| Re: init_snmpの失敗を検知する方法について logic - 2010/09/21(Tue) 10:30 No.4295 | |
|
|
 | 早速のご回答ありがとうございます。
サブエージェントはマスターエージェントに繋がるまでリトライするのですね。 まずは仰る通り、マスターエージェントでUNIXソケット作成に失敗した原因について 調べてみようと思います。 また何かありましたら相談させてください。 ありがとうございました。 |
|
 | ご教示頂きたい内容 <概要> OIDが一定ではないベンダハードウェア製品のTRAP受信する手順をご教示いただきたい。
<詳細> ベンダ製品のハードウェア故障をTRAP受信により検出しようとして、 snmptrapd.conf上に以下のようなディレクティブ設定にてOID指定することになるとは、 理解しておりますが、このOID下数桁が一定ではなく昇順に採番される状況にあります。
この際、OIDをワイルドカード指定により解決する方法はございますでしょうか? (当方はNET-SNMP version: 5.1.2となっております。)
traphandle OID|default PROGRAM [ARGS ...]
誠に恐れ入りますが以下についてご回答よろしくお願い致します。 (1)net-snmpの対応バージョン(snmpd、snmptrapd) (2)snmptrapd.confの記述方法 (3)snmptrapdの起動オプションの指定方法
|
| Re: OIDが一定ではないベンダハードウェアのTRAP受... うさぎ - 2010/08/27(Fri) 19:18 No.4271 | |
|
|
 | 追記です。
拡張OIDが一定ではないために TRAP受信先サーバ上でTRAP受信後のアクションを決定し難いということです。
具体的な例と致しまして、 機器の故障発生時に「故障」、回復時に「回復」のアクションを snmptrapd.confの記述内容として固定的に指定したいのですが それが機器から出力されるOIDが一定ではないために指定不可という事でございます。 。 これまでsnmptrapd.conf上でのOIDは全て記述するもの (Prefixによる記述はあるとしても)と理解しておりますが、 別の記述方法、対処方法はあるのでしょうか?
お忙しい中、大変恐れ入りますがご回答いただけますでしょうか。
|
| Re: OIDが一定ではないベンダハードウェアのTRAP受... YMI - 2010/08/29(Sun) 10:28 No.4274 | |
|
|
 | oid*のように最後の文字が*の場合、サブツリーで比較できます。 oid.*のように記述すると同じサブツリーですが、oidに一致するものは除外 します。(必ずサブツリーのもの) V5.4以降だとはいっています。(V5.5も) V5.1.2は、入っていません。 V5.2、 V5.3は不明です。(みてません。)
ただし、 >それが機器から出力されるOIDが一定ではないために指定不可という事でございます。 。 の意味が、同じイベントに関す手、ことなるOIDでTRAPが送られるとすると これは、その機器のエージェントの実装に問題があるように思います。 TRAPのOIDは、TRAPが示す事象(イベント)を一意に示すものですので 毎回変わるのはへんだと思います。
|
| Re: OIDが一定ではないベンダハードウェアのTRAP受... うさぎ - 2010/08/30(Mon) 14:50 No.4276 | |
|
|
 | YMIさま うさぎです。 お世話になっております。
大変ありがとうございます。 net-snmpのバージョンをV5.4以降にして、 oid.*の記述にて確認させていただきます。
>の意味が、同じイベントに関す手、ことなるOIDでTRAPが送られるとすると >これは、その機器のエージェントの実装に問題があるように思います。 >TRAPのOIDは、TRAPが示す事象(イベント)を一意に示すものですので >毎回変わるのはへんだと思います。
このベンダ製品の拡張OIDについては、 シーケンシャルに採番されているようです。 機器から送出されるOIDの設計思想について再確認してみます。 (このあたりRFC準拠していないような感じですが)
懇切丁寧なご回答ありがとうございました。
以上となります。
|
|
 | お世話になります。
現在、Ubuntu8.04にNet-SNMP5.5をベースとして SNMPエージェントを開発しています。
mib2cで生成したソース内からあるOIDが持つデータを取得したいと思っています。
具体的には、 mib-2(1.3.6.1.2.1)のsysDescr(1.3.6.1.2.1.1.1)の値が欲しい場合、 sysDescrのOIDをAPIに渡し、sysDescrの値(OCTET STRING)を取得する、 という使い方を想定しています。 (引数:OID, 出力:データの先頭アドレス, データのサイズ)
このような使い方ができるAPIはあるのでしょうか? (SNMPコマンドツールの「snmpget」をソース内から実行でも実現できそうですが、 コマンドよりもAPIがあれば、APIを使用したいです)
もしご存知でしたら教えていただけると助かります。 宜しくお願いいたします。 |
| Re: Net-SNMPにOID指定でデータを取得するAPIはある... YMI - 2010/08/29(Sun) 09:59 No.4273 | |
|
|
 | 夏休みで、回答が遅くなりました。
>このような使い方ができるAPIはあるのでしょうか? >(SNMPコマンドツールの「snmpget」をソース内から実行でも実現できそうですが、 > コマンドよりもAPIがあれば、APIを使用したいです) 昔、このようなAPIを見たことがあったのですが、忘れてしまいました。
同じようなことは、 agent/mibgroup/disman/mteTriggerTable.c の mte_get_response()関数で実施しています。 これは、内部のMIB値を監視して、TRAPを送信するなどの DISMANMIBの実装です。 やっていることは、snmpgetなどと同じですが、 内部セッションを使っています。 |
| Re: Net-SNMPにOID指定でデータを取得するAPIはある... TKS - 2010/08/30(Mon) 13:22 No.4275 | |
|
|
 | ご回答ありがとうございます。 提示して頂いたソースを参考にしてみます。 |
|
 | お世話になります。
現在、Ubuntu8.04にNet-SNMP5.5をベースとして SNMPエージェントを開発しています。
RMONのevent(9).eventTable(1)の「eventType(3)」に "snmp-trap(3)"や"log-and-trap(4)"を設定することができますが、 このイベントで送信すべきTRAPのパラメータが分かりません。
SNMPv2TRAPでは、sysUpTimeやsnmpTrapOID、関連管理情報などの パラメータがありますが、このイベントで送信すべきTRAPには 具体的にどのようなパラメータをセットすべきでしょうか? (RFC2819(STD53)に記載がありましたでしょうか?)
もしご存知でしたら教えていただけると助かります。 宜しくお願いいたします。 |
| Re: RMONのevent(9)で送信するTRAPのパラメータは? TKS - 2010/08/25(Wed) 16:34 No.4267 | |
|
|
 | 自己レスです。
RFC2819(STD53)にNOTIFICATION-TYPEとして 「risingAlarm」と「fallingAlarm」の記載がありました。
ここにTRAPのパラメータも定義されていましたので、 解決です。
以上です。
|
| Re: RMONのevent(9)で送信するTRAPのパラメータは? YMI - 2010/08/27(Fri) 06:10 No.4270 | |
|
|
 | すみません。夏休みで返信が遅くなりました。 解決できてなによりです。 |
|
 | MicrosoftのTecnetでも確認しましたが、以下不明点があります。 1、evntwinとevntcmdの違いは何でしょうか? SNMPサービスの起動とevntwinで起動させたイベントトラップトランスレータ画面で trap設定さえすれば、イベントログを送信させることができました。 いろいろHPを見ていると併用する必要があるとも書いてあるので、質問させていただきました。
2、evntwinを使用してtrap送信が可能となりました。が、数日後に改めて送信試験をしてみると イベントは発行されているのにtrapが送信されなくなりました。 (数日間の間でやったこと) ・eventcreateでカスタムイベント発行 ・トラップ定義の追加 (確認したこと) ・Trap送信先の設定確認 ・ベンダツールを使ってのSNMPTrapテスト(送信可能) ・SNMPサービス、SNMPTrapサービスの再起動、 イベントのtrap送信が出来ないのは他に何か可能性がありますでしょうか。 漠然とした質問で恐縮ですが、何かアドバイスいただければ幸いです。 |
| Re: WindowsのSNMPtrap送信について YMI - 2010/08/06(Fri) 06:49 No.4253 | |
|
|
 | これは、マイクロソフトに質問する内容だと思います。
|
| Re: WindowsのSNMPtrap送信について YMI - 2010/08/06(Fri) 07:07 No.4254 | |
|
|
 | OpenSolaris SMA(net-snmp)環境で拡張Trapを追加しようとしています。
MIBファイルの作成も完了し、snmptranslateで構文エラーも出ていない のですが、SMA mib2cで関数テンプレートを出力すると、テーブル、スカラー 構造の拡張MIB関連のテンプレートは出力されるのですが、Trap送信用の APIが出力されず困っています。
Trap対象のOIDはNOTIFICATION-TYPEで定義しています。 Windows/Linuxにnet-snmpをインストールした環境では、作成したMIBファイルで mib2cでTrap送信用の関数テンプレートが出力されます。
SUNWsmcmdパッケージ、SUNWsmmgrパッケージはインストールしています。
どなたかOpenSolaris SMA(net-snmp)で拡張Trap(独自追加のTrap)の追加 方法をご存知の方がいましたら教えて頂けると助かります。
よろしくお願いします m(_ _)m
|
| Re: OpenSolaris SMAで拡張Trapを飛ばしたい YMI - 2010/07/14(Wed) 07:15 No.4224 | |
|
|
 | 今、OpenSolaris SMA環境に環境がないので、実験できませんが。 mib2cでは、TRAP用のコードを出力するか?という問い合わせが でないという意味でしょうか?それともYESと答えても、出力 されないのでしょうか?
Linux、Windows環境で出力できるのであれば、そのコードを そのまま使える可能性があります。 私は、Linuxのmib2cで出力したコードをWindowsでも使っています。 NET-SNMPのバージョンが同じ(近い)ものがよいと思います。 OpenSolaris SMA環境のNET-SNMPのバージョンは、いくつでしょうか? NETで調べた限りでは、5.0.9のようです。
|
| Re: OpenSolaris SMAで拡張Trapを飛ばしたい ryochin - 2010/07/14(Wed) 22:35 No.4226 | |
|
|
 | コメントありがとうございます。
mib2cで、TRAP用コードを出力するか?という問い合わせが出ない という意味になります。
こちらの環境でOpenSolaris SMAのバージョンを確認しました。 NET-SNMP version: 5.0.9 なので、YMI様にNETで調べて頂いたバージョンと同じです。
|
| Re: OpenSolaris SMAで拡張Trapを飛ばしたい YMI - 2010/07/15(Thu) 06:44 No.4227 | |
|
|
 | http://www.net-snmp.org/からは NET-SNMP 5.0.9は、現在ダウンロードできませんが 同じ系列の 5.0.11.2をダウンロードしてみましたが TRAPのコードを出力するmib2c.notify.confがないようです。 このためTRAPコードは出力できないと思います。 バイナリーだと /usr/local/snmp などにインストールされています。
次の方法が考えられます。 (1)Linuxなどで出力したTRAPのコードをOpenSolarisに持って行って ビルドする。 出力されたTRAPのコードが使っているAPIは、 5.0.11.2にもあります。 send_v2trap( var_list ); snmp_free_varbind( var_list ); ですから、動作する可能性は高いです。
(2)NET-SNMPの新しいバージョンをソースからインストールする。
だと思います。
|
| Re: OpenSolaris SMAで拡張Trapを飛ばしたい ryochin - 2010/07/16(Fri) 01:20 No.4229 | |
|
|
 | YMI様、アドバイスありがとうございます!!
Windows環境でインストールしたNET-SNMPには mib2c.notify.conf が あったのですが、SMA(NET-SNMP Ver.5.0.9)には確かになかったです。 これが原因なのでは?と思ったりしてたのですが、やはりそのようですね。
2案も提示頂きありがとうございます。
(2)は、OSSを新規にインストールすることが許されないプロジェクトなので (1)で作成したコードをOpenSolais上でビルドする方法を試してみます。 OpenSolaris SMA(NET-SNMP Ver.5.0.9)にも、TRAPコードが使用しているAPIがあった のでYMI様の仰る通り試す価値はありそうです。
色々アドバイスありがとうございました!
手作りでTRAP送信処理を作りこむことも考えていたので、本当に助かりました。
|
|
 | お世話になります。
Windows上で、SNMPサービスの拡張エージェントを実装しております。 OctetStringの扱い方について教えていただけないでしょうか。
AsnOctetString構造体を返す部分を実装しております。
AsnOctetStringの定義 -- typedef struct { BYTE * stream; UINT length; BOOL dynamic; } AsnOctetString; --
例えば、「A」という文字列を返したい場合、 以下のようにしています。 この場合、driveCharが「A」を指しています。 -- AsnOctetString GetOctetString(char *driveChar){
AsnOctetString device;
// 文字の長さをセット(1文字) device.length = 1;
// メモリ確保 device.stream = (BYTE *)SnmpUtilMemAlloc( device.length * sizeof(char) );
// ポインタの情報をコピー memcpy( device.stream, driveChar, device.length * sizeof(char) );
device.dynamic = TRUE;
return device; } --
この結果を、SnmpVarBindにセットして返しているのですが、 snmpwalkを実行してみると、エラーとなってしまいます。
エラーメッセージ -- Error in packet. Reason: (genError) A general failure occured --
今回、実装したい範囲として、AsnOctetStringとして返したいのは、 1文字だけ(char)ですので、上記のようなサンプルとなっております。
よろしくお願いいたします。
|
| Re: AsnOctetStringについて YMI - 2010/06/01(Tue) 06:09 No.4184 | |
|
| Re: AsnOctetStringについて kk - 2010/06/01(Tue) 13:16 No.4185 | |
|
|
 | 情報提供ありがとうございます。 サンプルコードをもとに、いろいろ無駄な部分がありましたので、 少し修正しました。
拡張エージェントについては、 AsnCounterなどは取得できていますので、 AsnOctetStringの扱いがまずいのかと思っています。
MIB_ENTRYをセットする部分は、以下のようになっています。 下の例では、 MibPtr:MIB_ENTRYへのポインタです。 VarBind:SnmpVarBindへのポインタです。
※いただいたURLのサンプルコードで言うと、 UINT GetStoreVar(MIB_ENTRY* pMIB, AsnAny *pasnValue) の部分です。
※testCharはデバッグ用の文字列(例えば「A」)を入れています。
----- case ASN_OCTETSTRING:
// for debug ((AsnOctetString *)(LPSTR)MibPtr->Storage)->stream = (unsigned char * ) &testChar;
///// // octet数をセット VarBind->value.asnValue.string.length = ((AsnOctetString *)(LPSTR)MibPtr->Storage)->length; // メモリ確保 VarBind->value.asnValue.string.stream = (unsigned char *)SnmpUtilMemAlloc( VarBind->value.asnValue.string.length * sizeof(char) );
if( VarBind->value.asnValue.string.stream == NULL ){ return( SNMP_ERRORSTATUS_GENERR ); }
// ポインタの情報をコピーする memcpy( VarBind->value.asnValue.string.stream, ((AsnOctetString *)(LPSTR)MibPtr->Storage)->stream, VarBind->value.asnValue.string.length);
VarBind->value.asnValue.string.dynamic = TRUE; break; -----
デバッグ実行してみると、 VarBind->value.asnValue.string のところに、値が入っているように見えるんですが。。。
長文失礼いたします。 よろしくお願いいたします。 |
| Re: AsnOctetStringについて kk - 2010/06/02(Wed) 16:46 No.4186 | |
|
|
 | お世話になります。
いただいたサンプルコードをおったところ、 以下のところがいけなかったようでした。
-- // ポインタの情報をコピーする memcpy( VarBind->value.asnValue.string.stream, ((AsnOctetString *)(LPSTR)MibPtr->Storage)->stream, VarBind->value.asnValue.string.length); --
streamに格納するのは、charのポインタで良かったみたいです。
何とか解決することができました。 ありがとうございました。
|
|
 | お世話になります。 snmpV3Trapについてお聞きしたいことがございます。
snmpV3を使用してTrapを送信する際には、Trapにセキュリティ情報を付与して送信 すると思うのですが、この時Trapが図-1の流れであるとした時、 送信するTrapのセキュリティ情報(ユーザ名称/パスワード)にはA or Bのどちらの 情報を付与するべきでしょうか? ※今回のご質問により確認したいセキュリティ情報は「ユーザ名称」および「 パスワード」に関してです。
また、付与すべき内容について、明示的に記されている文献等を御存じでしたら、 重ねて教えて頂ければ嬉しいです。
---------------------------- <図-1> [装置A] →trap→ [装置B] ----------------------------
初歩的な質問ですが、よろしくお願い致します。
|
| Re: snmp V3のTrap送信について YMI - 2010/03/28(Sun) 16:36 No.4126 | |
|
|
 | ご質問では、装置Aと装置Bのユーザ名/パスワードが 違っているということになりますがそれは、おかしなことだと思います。 暗号化、認証を行うためには、 装置Aと装置Bのユーザ名/パスワードは一致しなければなりません。 違っているのは、SNMPv3のエンジンIDですが、 TRAPの場合は、装置A(送信元)のものを使います。
|
| Re: snmp V3のTrap送信について Y.S. - 2010/03/29(Mon) 09:10 No.4129 | |
|
|
 | 早速のご回答ありがとうございました。 Trapに付与するユーザ名およびパスワードは、送信元の情報を 使用する旨理解致しました。
|
|
 | 初めまして。
CentOs5.4上でnet-snmp 5.3.2.2を利用しています。 セキュリティレベル毎でView設定を試みようと下記にある設定で次のコマンド
$ snmpwalk -v3 -u myuser -a MD5 -A hogehoge -x DES -X fugafuga -lnoAuthNoPriv 127.0.0.1 .1 $ snmpwalk -v3 -u myuser -a MD5 -A hogehoge -x DES -X fugafuga -lauthNoPriv 127.0.0.1 .1 $ snmpwalk -v3 -u myuser -a MD5 -A hogehoge -x DES -X fugafuga -lauthPriv 127.0.0.1 .1
を試したのですが、どれも DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (87313) 0:14:33.13 DISMAN-EVENT-MIB::sysUpTimeInstance = No more variables left in this MIB View (It is past the end of the MIB tree)
と表示されてしまいました。
同じグループでもセキュリティレベルでViewを個別に設定することはできないのでしょうか? それとも下記設定が間違っていますか? 何かご存じでしたら、ご助言をお願いいたします。
設定は以下を参考にしました。 http://net-snmp.sourceforge.net/wiki/index.php/Vacm
----------------------------------------------------------- # /etc/snmp/snmpd.conf
group incremental usm myuser
view mini_view excluded .1 80 view mini_view included sysUpTime.0
view if_view excluded .1 80 view if_view included sysUpTime.0 view if_view included ifTable
view all_view included .1
access incremental "" usm noauth exact mini_view none none access incremental "" usm auth exact if_view none none access incremental "" usm priv exact all_view none none ------------------------------------------------------------
# /var/net-snmp/snmpd.conf createUser myuser MD5 hogehoge DES fugafuga ------------------------------------------------------------ |
| Re: net-snmpでセキュリティレベルのVACM設定ができ... YMI - 2010/02/06(Sat) 11:21 No.4060 | |
|
|
 | 最近 忙しくて、返信が遅くなりました。 既に解決しているかもしれません。
ソースコードを見る限り、 snmpagent/mibgroup/mibII/vacm_conf.c のvacm_check_view_contents()という関数で処理しています。 ここでの処理は、
(1)vacm_getGroupEntry()という関数で、 securityModelとsecurityNameからグループを取得しています。
(2)次に、vacm_getAccessEntry()関数で groupName、contextPrefix、 securityModel, securityLevel から、アクセスのエントリーを取得します。
getAccessEntry()内部の処理なのですが for (vp = accessList; vp; vp = vp->next) { if ((securityModel == vp->securityModel || vp->securityModel == SNMP_SEC_MODEL_ANY) && securityLevel >= vp->securityLevel && !memcmp(vp->groupName, group, glen + 1) && ((vp->contextMatch == CONTEXT_MATCH_EXACT && clen == vp->contextPrefix[0] && (memcmp(vp->contextPrefix, context, clen + 1) == 0)) || (vp->contextMatch == CONTEXT_MATCH_PREFIX && clen >= vp->contextPrefix[0] && (memcmp(vp->contextPrefix + 1, context + 1, vp->contextPrefix[0]) == 0)))) return vp; } return NULL; のように、チェックして、アクセスエントリーを返しています。 && securityLevel >= vp->securityLevel これがポイントだと思います。 access incremental "" usm noauth exact mini_view none none access incremental "" usm auth exact if_view none none access incremental "" usm priv exact all_view none none の順番だと、必ず最初のがヒットします。 access incremental "" usm priv exact all_view none none access incremental "" usm auth exact if_view none none access incremental "" usm noauth exact mini_view none none の順番にすると解決するかもしれません。
|
| Re: net-snmpでセキュリティレベルのVACM設定ができ... jv8 - 2010/02/07(Sun) 11:29 No.4062 | |
|
|
|