我在通过snmpwalk命令运行脚本时遇到了问题,该命令应该将随机数重定向到输出文件中:
我在snmpd.conf undet /etc/snmp/ as exec .1.3.6.1.4.1.99.1.53.1006 script.sh.sh /root/my_文件夹/script.sh中为脚本配置了OID
我的剧本是:
#!/usr/bin/ksh
Out_Path="$HOME/output.txt"
echo $RANDOM >> $Out_Path
--------------------------现在,我执行snmpwalk命令: snmpwalk -t 10 -v 1 -c public 127.0.1.1.1.3.6.1.1.1.99.1.53.1006,在输出文件中,我得到的是2个随机数,而不是1。我期望output.txt文件中只存在一个随机数。有人能解释这种行为或某种解决办法吗?
实际问题:
我正在解释我想要实现的目标,我需要通过snmpget命令执行一个脚本。
问题1:当我使用SNMPGET命令时,脚本执行,响应(内部)就会满(超过1KB),但是在将响应保存到一个文件中之后,我将执行echo $line,这将占用文件的行,正如我所期望的那样,它应该向我显示整个数据。(但我只能获取1 KB的数据)。
问题2:为了解决问题1,我采用了一种新的设计,就像从1 OID (脚本)开始,我在file.After中获得了整个数据,我正在使用新的OID执行一个新脚本,它将获取1条记录(1KB),修改现有数据并像这样更新data.So,我将使用不同的OID多次使用snmpwalk执行第二个脚本,所以当我试图更新reord(文件)时,我会得到所有的record.But,然后在一次测试中,它将删除2个数据,因为这个原因,我发布了这个问题。(在一个snmpwalk命令中有2次随机数KB )。
我希望你现在理解这个问题,但是如果你想要更多的细节,我会解释你的。
发布于 2012-12-19 12:19:30
snmpwalk命令由重复的snmpgetnext命令组成,只要子树中有要返回的内容。我认为在这种情况下,两个getnext请求在单次snmpwalk调用后被发送,以确定没有更多的数据可供检索。当然,请使用tcpdump或一些wireshark解决方案嗅探流量。顺便说一句。您确定-t10是一个正确的超时吗?我将显式重复选项设置为0,以避免重传(-r0选项)。
您要做的是对上面提到的OID执行snmp /getnext请求,以执行脚本并将其输出作为SNMP响应返回。我认为1KB问题是由其他原因引起的--在构建大型响应时,它似乎不是SNMP代理问题。请尝试遵循SNMPv1命令(如果您也有SNMPv3访问权限,请让我知道):
snmpget -v1 -t25 -r0 -cprivate <IP> .1.3.6.1.4.1.99.1.53.1006或
snmpgetnext -v1 -t25 -r0 -cprivate <IP> .1.3.6.1.4.1.99.1.53.1005对于snmpgetnext请求,请注意OID结尾处的1005八进制。这样的OID可能不存在,getnext应该正确地访问1006,因为它是第一个,存在的OID在1005之后。
https://stackoverflow.com/questions/13836558
复制相似问题