| #!/bin/sh |
| |
| . ../support/simple_eval_tools.sh |
| |
| HEADER 'snmpd embedded perl support (using NetSNMP::agent)' |
| |
| SKIPIF NETSNMP_DISABLE_SNMPV2C |
| SKIPIFNOT NETSNMP_EMBEDDED_PERL |
| SKIPIFNOT HAVE_SIGHUP |
| |
| # |
| # Begin test |
| # |
| |
| snmp_version=v2c |
| TESTCOMMUNITY=testcommunity |
| . ./Sv2cconfig |
| |
| TESTOID=.1.3.6.1.4.1.8872.9999.9999.1.0 |
| TESTOID2=.1.3.6.1.4.1.8872.9999.9999.2.0 |
| EMBPERL_AGENT=${SNMP_TMPDIR}/hello.pl |
| cat >$EMBPERL_AGENT <<END |
| #!/usr/bin/env perl |
| # minimal embedded perl agent |
| |
| 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 |
| |
| use NetSNMP::OID qw(:all); |
| use NetSNMP::agent qw(:all); |
| use NetSNMP::ASN qw(:all); |
| use SNMP; |
| |
| my \$regoid = new NetSNMP::OID(\$regat); |
| \$agent->register("hello", \$regoid, \&my_snmp_handler); |
| |
| 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; |
| } |
| } |
| } |
| } |
| END |
| |
| echo "use blib qw(${SNMP_UPDIR}/perl);" > ${SNMP_TMPDIR}/snmp_perl.pl |
| echo 'use NetSNMP::agent;' >> ${SNMP_TMPDIR}/snmp_perl.pl |
| echo '$agent = new NetSNMP::agent('"'dont_init_agent' => 1, 'dont_init_lib' => 1);" >> ${SNMP_TMPDIR}/snmp_perl.pl |
| |
| CONFIGAGENT perlInitFile ${SNMP_TMPDIR}/snmp_perl.pl |
| CONFIGAGENT "perl do '$EMBPERL_AGENT';" |
| CONFIGAGENT 'perl print STDERR "registered_perl_agent_ok";' |
| |
| STARTAGENT |
| |
| ## 1) SNMP GET against embedded perl mib module |
| CAPTURE "snmpget -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT $TESTOID" |
| CHECK "hello world" |
| |
| ## 2) persistency: reconfigure (HUP), re-test |
| HUPAGENT |
| CAPTURE "snmpget -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT $TESTOID2" |
| CHECK "hello again world" |
| |
| ## stop |
| STOPAGENT |
| |
| FINISHED |