[#36686] 1.1 < 61.1 - 60.0 — Shin-ichiro HARA <sinara@...>

原です。

19 messages 2002/12/06

[#36770] www.ruby-lang.orgリニューアル準備のお知らせ — TADA Tadashi <sho@...>

ruby-lang.orgのwebmasterチームでは、タイムリーな情報提供と使いやすい

11 messages 2002/12/16

[ruby-list:36809] Re: Ruby SNMPについて

From: Tadashi Oh-Ya <toy@...>
Date: 2002-12-19 06:49:32 UTC
List: ruby-list #36809
おおやと申します。

先回の、Ruby SNMPでOCTETが表示できない件について、一応
表示形式を

 <得られる出力>
 1.3.6.1.2.1.17.1.1.0 = 08 00 46 22 76 ce 

とすることができました。

わかってみれば非常に単純な解でした。

-------------------------------ここから-------------------------------
*** snmp_sess.c.orig	Sat Dec 14 11:55:27 2002
--- snmp_sess.c	Thu Dec 19 15:21:50 2002
***************
*** 525,537 ****
    struct variable_list *var;
    size_t i;
    VALUE ary;
  
    Data_Get_Struct(csnmpvar, struct variable_list, var);
    switch(var->type) {
    case ASN_INTEGER:
      return INT2NUM(*var->val.integer);
    case ASN_OCTET_STR:
!     return rb_str_new(var->val.string, var->val_len);
    case ASN_OPAQUE:
      return Qnil;
    case ASN_OBJECT_ID:
--- 525,557 ----
    struct variable_list *var;
    size_t i;
    VALUE ary;
+   int ishex = 0, x = 0;
+   u_char *cp;
+   u_char *hex;
  
    Data_Get_Struct(csnmpvar, struct variable_list, var);
    switch(var->type) {
    case ASN_INTEGER:
      return INT2NUM(*var->val.integer);
    case ASN_OCTET_STR:
!     ishex = 0;
!     for(cp = var->val.string, x = 0; x < (int)var->val_len; x++, cp++) {
!       if (!(isprint(*cp) || isspace(*cp))) {
! 	ishex = 1;
!       }
!     }
! 
!     if(ishex) { /* value is hex */
!       /* ary = rb_ary_new2((int)var->val_len); */
!       ary = rb_ary_new();
!       for(cp = var->val.string, x = 0; x < (int)var->val_len; x++, cp++) {
!         sprintf(hex, "%02x ", (int)*cp);
!         rb_ary_push(ary, rb_str_new2(hex));
!       }
!       return ary;
!     } else { /* value is string */
!       return rb_str_new(var->val.string, var->val_len);
!     }
    case ASN_OPAQUE:
      return Qnil;
    case ASN_OBJECT_ID:
-------------------------------ここまで-------------------------------

とりあえず自分は満足できたということで、お知らせまで。

In This Thread