I don't know for sure, but I suspect that the routine does not expect a dotted quad string (to encode into an ASN_IPADRESS, but that it expects a 4 byte packed integer instead.
On Tue, Sep 15, 2020 at 3:02 AM Drovalev R.N. <drova...@algont.ru> wrote: > Hello! > > > > There is a need to return the value of the ip address when requesting a > specific OID. > > It is necessary to emulate the snmp device. > > Implemented via perl, which I am new to. > > > > Perl extension NetSNMP::ASN does not return values in the request, where > Exportable constants - ASN_IPADDRESS, but return values other any types is > very good! > > Why? > > > > 1. If in the file - my $string_ASN = ASN_OCTET_STR; > > *# snmpget -c public -v 1 192.168.3.102 1.3.6.1.4.1.318.2.1.2.1.2.1* > > Iso.1.3.6.1.4.1.318.2.1.2.1.2.1 = STRING: "192.168.3.7" > > > > 2. If in the file - my $string_ASN = ASN_IPADDRESS; > > #*snmpget -c public -v 1 192.168.3.102 1.3.6.1.4.1.318.2.1.2.1.2.1* > > Reason: *(noSuchName) There is no such variable name in this MIB*. > > Failed object: iso.1.3.6.1.4.1.318.2.1.2.1.2.1 > > > > But > > > > #systemctl status snmpd (p.#2) > > snmpd.service - Simple Network Management Protocol (SNMP) Daemon. > > Loaded: loaded (/lib/systemd/system/snmpd.service; enabled; vendor > preset: enabled) > > Active: active (running) since Fri 2020-09-11 14:24:24 MSK; 5min ago > > Process: 30895 ExecStartPre=/bin/mkdir -p /var/run/agentx > (code=exited, status=0/SUCCESS) > > Main PID: 30905 (snmpd) > > Tasks: 1 (limit: 1075) > > Memory: 19.6M > > CGroup: /system.slice/snmpd.service > > └─30905 /usr/sbin/snmpd -LOw -u Debian-snmp -g Debian-snmp -I > -smux mteTrigger mteTriggerConf -f -p /run/snmpd.pid > > > > Sep 11 14:24:24 snmpd systemd[1]: Starting Simple Network Management > Protocol (SNMP) Daemon.... > > Sep 11 14:24:24 snmpd systemd[1]: Started Simple Network Management > Protocol (SNMP) Daemon.. > > Sep 11 14:24:26 snmpd snmpd[30905*]: IP address of 11 bytes passed to > setValue with ASN_IPADDRESS* > > > > > > > > Why isn't the ip address returned? How to correctly assign ip address in > perl for ASN_IPADDRESS? > > Where is my mistake? Please tell me. > > Thanks. > > > > --- code --- > > Enable the file in snmpd.conf: > > *perl do "/usr/share/snmp/2.1.2.1.pl <http://2.1.2.1.pl>";* > > > > Example my 2.1.2.1.pl.pl file : > > #!/usr/bin/perl > > use NetSNMP::agent (':all'); > > use NetSNMP::ASN qw(ASN_IPADDRESS ASN_OCTET_STR); > > > > sub hello_handler { > > my ($handler, $registration_info, $request_info, $requests) = @_; > > my $request; > > my $string_value = "192.168.3.7"; > > > > my $string_ASN = ASN_OCTET_STR; > > #my $string_ASN = ASN_IPADDRESS; > > > > for($request = $requests; $request; $request = $request->next()) { > > my $oid = $request->getOID(); > > if ($request_info->getMode() == MODE_GET) { > > if ($oid == new NetSNMP::OID(".1.3.6.1.4.1.318.2.1.2.1.2.1")) { > > $request->setValue($string_ASN, ($string_value)); > > } > > elsif ($oid == new NetSNMP::OID(".1.3.6.1.4.1.318.2.1.2.1.2.1")) { > > $request->setValue($string_ASN, ($string_value)); > > } > > } elsif ($request_info->getMode() == MODE_GETNEXT) { > > if ($oid == new NetSNMP::OID(".1.3.6.1.4.1.318.2.1.2.1.2.1")) { > > $request->setOID(".1.3.6.1.4.1.318.2.1.2.1.2.2"); > > $request->setValue($string_ASN, ($string_value)); > > } > > elsif ($oid < new NetSNMP::OID(".1.3.6.1.4.1.318.2.1.2.1.2.1")) { > > $request->setOID(".1.3.6.1.4.1.318.2.1.2.1.2.1"); > > $request->setValue($string_ASN, ($string_value)); > > } > > } > > } > > } > > my $agent = new NetSNMP::agent(); > > $agent->register(".1.3.6.1.4.1.318.2.1.2.1.2.1", > ".1.3.6.1.4.1.318.2.1.2.1.2.1", > > \&hello_handler); > > > > P.S. My task is to return the address of the computer that makes the > request for this OID. But at least just returned an arbitrary address! > > > > > > > _______________________________________________ > Net-snmp-coders mailing list > Net-snmp-coders@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/net-snmp-coders >
_______________________________________________ Net-snmp-coders mailing list Net-snmp-coders@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/net-snmp-coders