#!/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 SKIPIFNOT NETSNMP_SECMOD_USM # # 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 <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