test.pl
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:3k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. # Before `make install' is performed this script should be runnable with
  2. # `make test'. After `make install' it should work as `perl test.pl'
  3. ######################### We start with some black magic to print on failure.
  4. # Change 1..1 below to 1..last_test_to_print .
  5. # (It may become useful if the test is moved to ./t subdirectory.)
  6. BEGIN { $| = 1; print "1..5n"; }
  7. END {print "not ok 1n" unless $loaded;}
  8. use NetSNMP::agent (':all');
  9. use NetSNMP::default_store (':all');
  10. use NetSNMP::agent::default_store (':all');
  11. use NetSNMP::ASN (':all');
  12. use NetSNMP::OID;
  13. #use NetSNMP::agent (':all');
  14. use SNMP;
  15. $loaded = 1;
  16. print "ok 1n";
  17. ######################### End of black magic.
  18. sub it {
  19.     if ($_[0]) {
  20. return "ok " . $_[1] . "n";
  21.     } else {
  22. return "not ok ". $_[1] ."n";
  23.     }
  24. }
  25. # Insert your test code below (better if it prints "ok 13"
  26. # (correspondingly "not ok 13") depending on the success of chunk 13
  27. # of the test code):
  28. print it((MODE_GET == 0xa0 &&
  29.   MODE_GETNEXT == 0xa1 &&
  30.   MODE_GETBULK == 0xa5 &&
  31.   MODE_SET_BEGIN == -1 &&
  32.   MODE_SET_RESERVE1 == 0 &&
  33.   MODE_SET_RESERVE2 == 1 &&
  34.   MODE_SET_ACTION == 2 &&
  35.   MODE_SET_COMMIT == 3 &&
  36.   MODE_SET_FREE == 4 &&
  37.   MODE_SET_UNDO == 5 &&
  38.   SNMP_ERR_NOERROR == 0 &&
  39.   SNMP_ERR_TOOBIG == 1 &&
  40.   SNMP_ERR_NOSUCHNAME == 2 &&
  41.   SNMP_ERR_BADVALUE == 3 &&
  42.   SNMP_ERR_READONLY == 4 &&
  43.   SNMP_ERR_GENERR == 5 &&
  44.   SNMP_ERR_NOACCESS == 6 &&
  45.   SNMP_ERR_WRONGTYPE == 7 &&
  46.   SNMP_ERR_WRONGLENGTH == 8 &&
  47.   SNMP_ERR_WRONGENCODING == 9 &&
  48.   SNMP_ERR_WRONGVALUE == 10 &&
  49.   SNMP_ERR_NOCREATION == 11 &&
  50.   SNMP_ERR_INCONSISTENTVALUE == 12 &&
  51.   SNMP_ERR_RESOURCEUNAVAILABLE == 13 &&
  52.   SNMP_ERR_COMMITFAILED == 14 &&
  53.   SNMP_ERR_UNDOFAILED == 15 &&
  54.   SNMP_ERR_AUTHORIZATIONERROR == 16 &&
  55.   SNMP_ERR_NOTWRITABLE == 17
  56.  ), 2);
  57. my $agent = new NetSNMP::agent('Name' => 'test',
  58.        'Ports' => '9161');
  59. print it($agent, 3);
  60. $regitem = $agent->register("test_reg", ".1.3.6.1.8888", &testsub);
  61. print it($regitem, 4);
  62. #print STDERR $regitem,":",ref($regitem),"n";
  63. print it(ref($regitem) eq "netsnmp_handler_registrationPtr", 5);
  64. exit;
  65. while(1) {
  66.     print netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID, 
  67. NETSNMP_DS_AGENT_PORTS), "n";
  68.     $agent->agent_check_and_process(1);
  69.     print netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID, 
  70. NETSNMP_DS_AGENT_PORTS), "n";
  71.     print "got somethingn";
  72. }
  73. exit;
  74. $x = NetSNMP::agent::handler_registration::new("hi",&testsub,".1.3.6.1.999");
  75. print ((ref($x) eq "handler_registrationPtr") ? "ok 2n" : "not ok 2n");
  76. print (($x->register() == 0) ? "ok 3n" : "not ok 3n");
  77. my $y = NetSNMP::agent::register_mib("me",&testsub,".1.3.6.1.8888");
  78. while(1) {
  79.   NetSNMP::agent::agent_check_and_process();
  80.   print "got somethingn";
  81. }
  82. use Data::Dumper;
  83. sub testsub {
  84.     print STDERR "in perl handler subn";
  85.     print STDERR "  args: ", join(", ", @_), "n";
  86.     print STDERR "  dumped args: ", Dumper(@_);
  87.     $oid= $_[3]->getOID();
  88.     print STDERR "  request oid: ", ref($oid), " -> ", $oid, "n";
  89.     print STDERR "  mode: ", $_[2]->getMode(),"n";
  90.     $_[3]->setOID(".1.3.6.1.8888.1");
  91.     $_[3]->setValue(2, 42);
  92.     $_[3]->setValue(ASN_INTEGER, 42);
  93.     print STDERR "  oid: ", $_[3]->getOID(),"n";
  94.     print STDERR "  ref: ", ref($_[3]),"n";
  95.     print STDERR "  val: ", $_[3]->getValue(),"n";
  96. }