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

SNMP编程

开发平台:

Unix_Linux

  1. # common parameters used in SNMP::Session creation and tests
  2. $agent_host = 'localhost';
  3. $agent_port = 8765;
  4. $trap_port = 8764;
  5. $mibdir = '/usr/local/share/snmp/mibs';
  6. $comm = 'v1_private';
  7. $comm2 = 'v2c_private';
  8. $comm3 = 'v3_private';
  9. $sec_name = 'v3_user';
  10. $oid = '.1.3.6.1.2.1.1.1';
  11. $name = 'sysDescr';
  12. $name_module = 'RFC1213-MIB::sysDescr';
  13. $name_module2 = 'SNMPv2-MIB::sysDescr';
  14. $name_long = '.iso.org.dod.internet.mgmt.mib-2.system.sysDescr';
  15. $name_module_long = 'RFC1213-MIB::.iso.org.dod.internet.mgmt.mib-2.system.sysDescr';
  16. $name_module_long2 = 'SNMPv2-MIB::.iso.org.dod.internet.mgmt.mib-2.system.sysDescr';
  17. $auth_pass = 'test_pass_auth';
  18. $priv_pass = 'test_pass_priv';
  19. # don't use any .conf files other than those specified.
  20. $ENV{'SNMPCONFPATH'} |= "bogus";
  21. # erroneous input to test failure cases
  22. $bad_comm = 'BAD_COMMUNITY';
  23. $bad_name = "badName";
  24. $bad_oid = ".1.3.6.1.2.1.1.1.1.1.1";
  25. $bad_host = 'bad.host.here';
  26. $bad_port = '9999999';
  27. $bad_auth_pass = 'bad_auth_pass';
  28. $bad_priv_pass = 'bad_priv_pass';
  29. $bad_sec_name = 'bad_sec_name';
  30. $bad_version = 7;
  31. local $snmpd_cmd;
  32. local $snmptrapd_cmd;
  33. my $line;
  34. if ($^O =~ /win32/i) {
  35.   require Win32::Process;
  36. }
  37. sub snmptest_cleanup {
  38.     sleep 1; # strangely we need to wait for pid files to appear ??
  39.     if ((-e "t/snmpd.pid") && (-r "t/snmpd.pid")) {
  40.         #warn "nStopping agents for test script $0n";
  41.         # Making sure that any running agents are killed.
  42. # warn "killing snmpd:", `cat t/snmpd.pid`, "n";
  43.         if ($^O !~ /win32/i) {
  44.           system "kill `cat t/snmpd.pid` > /dev/null 2>&1";
  45.         }
  46.         else {
  47.           open(H, "<t/snmpd.pid");
  48.           my $pid = (<H>);
  49.           close (H);
  50.           if ($pid > 0) {
  51.             Win32::Process::KillProcess($pid, 0)
  52.           }
  53.         }
  54. unlink "t/snmpd.pid";
  55.     }
  56.     if ((-e "t/snmptrapd.pid") && (-r "t/snmptrapd.pid")) {
  57.         # Making sure that any running agents are killed.
  58. # warn "killing snmptrap:", `cat t/snmptrapd.pid`, "n";
  59.         if ($^O !~ /win32/i) {
  60.           system "kill `cat t/snmptrapd.pid` > /dev/null 2>&1";
  61.         }
  62.         else {
  63.           open(H, "<t/snmptrapd.pid");
  64.           my $pid = (<H>);
  65.           close (H);
  66.           if ($pid > 0) {
  67.             Win32::Process::KillProcess($pid, 0)
  68.           }
  69.         }
  70.           
  71. unlink "t/snmptrapd.pid";
  72.     }
  73. }
  74. snmptest_cleanup();
  75. #Open the snmptest.cmd file and get the info
  76. if (open(CMD, "<t/snmptest.cmd")) {
  77.   while ($line = <CMD>) {
  78.     if ($line =~ /HOSTs*=>s*(.*?)s+$/) {
  79.       $agent_host = $1;
  80.     } elsif ($line =~ /MIBDIRs*=>s*(.*?)s+$/) {
  81.       $mibdir = $1;
  82.     } elsif ($line =~ /AGENT_PORTs*=>s*(.*?)s+$/) {
  83.       $agent_port = $1;
  84.     } elsif ($line =~ /SNMPDs*=>s*(.*?)s+$/) {
  85.       $snmpd_cmd = $1;
  86.     } elsif ($line =~ /SNMPTRAPDs*=>s*(.*?)s+$/) {
  87.       $snmptrapd_cmd = $1;
  88.     }
  89.   } # end of while
  90.   close CMD;
  91. } else {
  92.   die ("Could not start agent. Couldn't find snmptest.cmd filen");
  93. }
  94. #warn "nStarting agents for test script $0n";
  95. if ($^O !~ /win32/i) {
  96.   # Unix
  97.   if ($snmpd_cmd) {
  98.     if (-r $snmpd_cmd and -x $snmpd_cmd) {
  99.       $basedir = `pwd`;
  100.       chomp $basedir;
  101.       #print STDERR "running: $snmpd_cmd -r -l t/snmptest.log -C -c $basedir/t/snmptest.conf -P $basedir/t/snmpd.pid/t/snmpd.pid $agent_port > /dev/null 2>&1n";
  102.       system "$snmpd_cmd -r -l t/snmptest.log -C -c $basedir/t/snmptest.conf -P $basedir/t/snmpd.pid $agent_port > /dev/null 2>&1";
  103.     } else {
  104.       warn("Couldn't run snmpdn");
  105.     }
  106.   }
  107.   if ($snmptrapd_cmd) {
  108.     if (-r $snmptrapd_cmd and -x $snmptrapd_cmd) {
  109.       system "$snmptrapd_cmd -u t/snmptrapd.pid -c t/snmptest.conf -C $trap_port > /dev/null 2>&1";
  110.     } else {
  111.       warn("Couldn't run snmptrapdn");
  112.     }
  113.   }
  114. }
  115. else {
  116.   # Windows
  117.   if ($snmpd_cmd) {
  118.       if (-r $snmpd_cmd) {
  119.         #print STDERR "start "SNMPD" /min "$snmpd_cmd" -r -Lf t/snmptest.log -C -c t/snmptest.conf -p t/snmpd.pid $agent_port > nuln";
  120.       system "start "SNMPD" /min "$snmpd_cmd" -r -Lf t/snmptest.log -C -c t/snmptest.conf -p t/snmpd.pid $agent_port > nul";
  121.     } else {
  122.       warn("Couldn't run snmpdn");
  123.     }
  124.   }
  125.   if ($snmptrapd_cmd) {
  126.     if (-r $snmptrapd_cmd) {
  127.       #print STDERR "start /min "SNMPTRAPD" "$snmptrapd_cmd" -Lf t/snmptrapdtest.log -p t/snmptrapd.pid -C -c t/snmptest.conf -C $trap_port > nuln";
  128.       system "start /min "SNMPTRAPD" "$snmptrapd_cmd" -Lf t/snmptrapdtest.log -p t/snmptrapd.pid -C -c t/snmptest.conf -C $trap_port > nul";
  129.     } else {
  130.       warn("Couldn't run snmptrapdn");
  131.     }
  132.   }
  133.   sleep 2; # Give programs time to start
  134. 1;