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

Reply via email to