Perl NetSNMP::agent 的使用

你把 snmpwalk 的 -c 的参数改成 public 试试。
-c public


QUOTE:
原帖由 flw 于 2008-12-5 14:10 发表
你把 snmpwalk 的 -c 的参数改成 public 试试。
-c public

[root@cacti ~]# snmpwalk -c public -v2c 172.16.1.200 .1.3.6.1.4.1.8072.9999.9999.7375
Timeout: No Response from 172.16.1.200
[root@cacti ~]# snmpwalk -c tvu -v2c 172.16.1.200 .1.3.6.1.4.1.8072.9999.9999.7375
NET-SNMP-MIB::netSnmpPlaypen.7375 = No Such Object available on this agent at this OID


为啥叫我这么做呢?难道 sub agentx 会自动设置为 public?


QUOTE:
原帖由 flw 于 2008-12-5 13:56 发表
1,run "net-snmp-config --configure-options" and see if that flag was used.
2,你看过 /var/log/messages 和 /var/log/snmpd.log 了吗?没什么异常吗?

[root@d1 ~]# net-snmp-config --configure-options | grep perl | wc -l
1

再次确认一下。
[root@d1 log]# perl /usr/bin/pla.pl
Can't call method "register" on an undefined value at /usr/bin/pla.pl line 19.

问题应该还是出在脚本里面。

我安装了 net-snmp-perl 我记得 agent 模块已经在里面了呀。
[root@d1 log]# rpm -ql net-snmp-perl | grep agent
/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/NetSNMP/agent
/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/NetSNMP/agent.pm
/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/NetSNMP/agent/default_store.pm
/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/NetSNMP/agent/netsnmp_request_infoPtr.pm
/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/auto/NetSNMP/agent
/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/auto/NetSNMP/agent/agent.so
/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/auto/NetSNMP/agent/autosplit.ix
/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/auto/NetSNMP/agent/default_store
/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/auto/NetSNMP/agent/default_store/autosplit.ix
/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/auto/NetSNMP/agent/default_store/default_store.so
/usr/share/man/man3/NetSNMP::agent.3pm.gz
/usr/share/man/man3/NetSNMP::agent::default_store.3pm.gz


在里面的,但不知道为啥报调用失败。
14 楼的问题已经解决。

        my $agent = new NetSNMP::agent(
                                # makes the agent read a my_agent_name.conf file
                                'Name' => "my_agent_name",
                                'AgentX' => 1
                                );
        }

        $agent->register("my_agent_name", ".1.3.6.1.4.1.8072.9999.9999.7375",
                         \&myhandler);

定义变量在先,调用变量在后。太傻了,居然犯了这种错。

不过目前还是没有得到输出。
你自己再慢慢折腾折腾吧。
我记得我搞的时候挺简单啊。
当然也许只不过是我比别人对待工作比较有耐心罢了。


QUOTE:
原帖由 flw 于 2008-12-5 14:43 发表
你自己再慢慢折腾折腾吧。
我记得我搞的时候挺简单啊。
当然也许只不过是我比别人对待工作比较有耐心罢了。

当初搞的文件还在么?只要能有一个能跑起来的,就好办多了。知道问题出在哪里,接着慢慢折腾就是了。


QUOTE:
原帖由 latteye 于 2008-12-5 14:48 发表

当初搞的文件还在么?只要能有一个能跑起来的,就好办多了。知道问题出在哪里,接着慢慢折腾就是了。

都在,不过不能给你。因为那是职务成果。
不过我可以负责任地告诉你,
我搞起来的第一个能跑的脚本,就是 CPAN 上的那个例子。

因此不要总是幻想别人给你一个能跑起来的,其实能跑起来的你早就有了。
这种问题,多半都是配置问题。



QUOTE:
原帖由 flw 于 2008-12-5 14:59 发表

都在,不过不能给你。因为那是职务成果。
不过我可以负责任地告诉你,
我搞起来的第一个能跑的脚本,就是 CPAN 上的那个例子。

因此不要总是幻想别人给你一个能跑起来的,其实能跑起来的你早就有了。
这 ...

行 我再使劲儿配。

现在已经做到这种效果了:

[root@d1 snmp]# perl /usr/bin/pla.pl
NET-SNMP version 5.3.1 AgentX subagent connected


但是很多东西还是很迷糊。我再多看看,累积到一定程度还有问题再上来吧。