扩展OID的Net :: SNMP缓存结果

时间:2015-04-04 16:26:57

标签: linux perl snmp net-snmp

这项工作的范围是在“同一时间”查询两台机器的高分辨率计时器,并获得两个系统之间的时钟不准确性。这是通过让第3台机器为自定义OID发送SNMP-get来完成的,其中SNMP代理配置为调用perl脚本以返回高分辨率计时器。一切正常,因为snmp-get设法返回预期的结果。然而,似乎无论snmpget查询的频率如何,snmpagent仅以约5秒的间隔对脚本执行新的查询。我正在运行NET SNMP版本5.4.3。经过一些研究后,我发现这是典型的NET SNMP缓存结果,这是在MIB树的基础上完成的。通过查询snmpwalk到1.3.6.1.4.1.8072.1.5.3,有相应间隔的MIB(nsCacheTable)。显然,值可以更改为0以删除缓存。其中一些是只读的。虽然我使用SNMPset将它们中的一些设置为0(因为它们中的大多数都返回Bad对象类型错误)。 我知道非常基本的SNMP,所以我在线跟踪指南,并在snmpd.conf中使用此行将下面的自定义OID映射到perl脚本。

extend .1.3.6.1.4.1.27654.3 return_date /usr/bin/perl [directory]/[perl script name].pl

然后包含输出的实际OID(在纪元中的时间)是: iso.3.6.1.4.1.27654.3.3.1.1.11.114.101.116.117.114.110.95.100.97.116.101

任何人都有任何想法如何禁用此OID的缓存?

提前致谢。

--- --- EDIT

根据this博客文章,为了避免禁用缓存,可以使用pass-persist脚本,这些脚本看起来更复杂,乍看之下。我以前调用的perl脚本如下:

#!/usr/bin/perl
# THIS SCRIPT RETURNS THE EPOCH TIME OF DAY IN MICROSECONDS

use Time::HiRes qw(gettimeofday);
($s, $usec) = gettimeofday();

$newtime = $s.$usec;
print ($newtime);

任何人都可以在转换此脚本以获取pass-persist以及snmpd.conf的外观方面提供帮助?

0 个答案:

没有答案