⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t115agentxperl

📁 开发snmp的开发包有两个开放的SNMP开发库
💻
字号:
#!/bin/sh. ../eval_tools.shHEADER 'AgentX subagent in Perl (using NetSNMP::agent)'SKIPIF DISABLE_SNMPV2CSKIPIFNOT USING_AGENTX_MASTER_MODULESKIPIFNOT USING_AGENTX_SUBAGENT_MODULE# make sure the toolkit has been configured --with-perl-modules[ -d ${SNMP_UPDIR}/perl/blib/arch/auto/NetSNMP/agent ] || SKIP## Begin test#snmp_version=v2cTESTCOMMUNITY=testcommunity. ./Sv2cconfigTESTOID=.1.3.6.1.4.1.8872.9999.9999.1.0TESTOID2=.1.3.6.1.4.1.8872.9999.9999.2.0AGENTX_SOCKET=${SNMP_TMPDIR}/agentx_socketPERL_SUBAGENT=${SNMP_TMPDIR}/hello.plPERL_SUBAGENT_CONF=${SNMP_TMPDIR}/hello.confcat >$PERL_SUBAGENT <<END#!${SNMP_PERLPROG}# minimal AgentX subagent in Perluse blib qw(${SNMP_UPDIR}/perl);use NetSNMP::OID qw(:all);use NetSNMP::agent qw(:all);use NetSNMP::ASN qw(:all);use NetSNMP::agent::default_store;use NetSNMP::default_store qw(:all);use SNMP;## double-fork daemonmy \$pid;unless (\$pid = fork) {  unless (fork) {    ## start main code    my \$regat = '.1.3.6.1.4.1.8872.9999.9999'; # netSnmpPlayPen    my \$myoid = \$regat . ".1.0"; # the "hello world" OID    my \$myoid2 = \$regat . ".2.0"; # the "hello again world" OID    my \$pidfile = shift; # take PID file as first argument     open(PIDFILE, ">\$pidfile") or die "Couldn't open \$pidfile";    print PIDFILE \$\$;    close(PIDFILE);sub my_snmp_handler {  my (\$handler, \$registration_info, \$request_info, \$requests) = @_;  for(my \$request = \$requests; \$request; \$request = \$request->next()) {    if (\$request_info->getMode() == MODE_GET) {      if (\$request->getOID() == new NetSNMP::OID(\$myoid)) {        \$request->setValue(ASN_OCTET_STR, "hello world");        last;      } elsif (\$request->getOID() == new NetSNMP::OID(\$myoid2)) {        \$request->setValue(ASN_OCTET_STR, "hello again world");        last;      }    }  }}sub shut_it_down { \$running = 0; }    netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,                           NETSNMP_DS_AGENT_NO_ROOT_ACCESS, 1);    my \$agent = new NetSNMP::agent('Name' => 'hello', 'AgentX' => 1);    my \$regoid = new NetSNMP::OID(\$regat);    \$agent->register("hello", \$regoid, \&my_snmp_handler);    \$SIG{'INT'} = \&shut_it_down;    \$SIG{'QUIT'} = \&shut_it_down;    \$running = 1;    while(\$running) {      \$agent->agent_check_and_process(1);    }    \$agent->shutdown();    ## end main code    exit 0;  }  exit 0;}waitpid(\$pid, 0);ENDecho "agentxsocket $AGENTX_SOCKET" > $PERL_SUBAGENT_CONFCONFIGAGENT master agentxCONFIGAGENT agentxsocket $AGENTX_SOCKETSTARTAGENT# make sure that we can fulfill all library dependencies_ld_lib_path="${SNMP_UPDIR}/snmplib/.libs:${SNMP_UPDIR}/agent/.libs:${SNMP_UPDIR}/agent/helpers/.libs"if [ "x$LD_LIBRARY_PATH" != "x" ]; then  LD_LIBRARY_PATH="${_ld_lib_path}:${LD_LIBRARY_PATH}"else  LD_LIBRARY_PATH="${_ld_lib_path}"fiif [ "x$DYLD_LIBRARY_PATH" != "x" ]; then  DYLD_LIBRARY_PATH="${_ld_lib_path}:${DYLD_LIBRARY_PATH}"else  DYLD_LIBRARY_PATH="${_ld_lib_path}"fiif [ "x$SHLIB_PATH" != "x" ]; then  SHLIB_PATH="${_ld_lib_path}:${SHLIB_PATH}"else  SHLIB_PATH="${_ld_lib_path}"fiexport LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH# start perl subagent/usr/bin/env SNMPCONFPATH="${SNMP_TMPDIR}:${SNMP_TMP_PERSISTENTDIR}" $SNMP_PERLPROG $PERL_SUBAGENT $SNMP_AGENTX_PID_FILE >$SNMP_AGENTX_LOG_FILE 2>&1DELAY## 1) SNMP GET against mib object implemented by the perl subagentCAPTURE "snmpget -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT $TESTOID"CHECK "hello world"## 2) persistency: reconfigure master agent (HUP), re-testHUPAGENTCAPTURE "snmpget -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT $TESTOID2"CHECK "hello again world"## stopSTOPAGENTSTOPPROG $SNMP_AGENTX_PID_FILEFINISHED

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -