我目前在使用 snmpset 从监控服务器获取思科配置时遇到了麻烦。
以下是我的建议:
snmpset -v2c -cvtmYdXVHfo9v38oAbtACikvV calcium \
1.3.6.1.4.1.9.9.96.1.1.1.1.2.111 integer 1 \
1.3.6.1.4.1.9.9.96.1.1.1.1.3.111 integer 4 \
1.3.6.1.4.1.9.9.96.1.1.1.1.4.111 integer 1 \
1.3.6.1.4.1.9.9.96.1.1.1.1.5.111 ipaddress 172.23.129.4 \
1.3.6.1.4.1.9.9.96.1.1.1.1.6.111 octetstring "config" \
1.3.6.1.4.1.9.9.96.1.1.1.1.14.111 integer 4
遵循以下文档:cisco_snmp_doc:
ccCopyProtocol is 1.3.6.1.4.1.9.9.96.1.1.1.1.2
ccCopySourceFileType 1.3.6.1.4.1.9.9.96.1.1.1.1.3
ccCopyDestFileType 1.3.6.1.4.1.9.9.96.1.1.1.1.4
ccCopyServerAddress 1.3.6.1.4.1.9.9.96.1.1.1.1.5
ccCopyFileName 1.3.6.1.4.1.9.9.96.1.1.1.1.6
ccCopyEntryRowStatus 1.3.6.1.4.1.9.9.96.1.1.1.1.14
Cisco 文档指示指定一个随机整数(这里是 111,如文档中所述,但指定 1 不会改变任何内容)
以下是我得到的结果:
1.3.6.1.4.1.9.9.96.1.1.1.1.5.111: Value out of range (172.23.129.4)
1.3.6.1.4.1.9.9.96.1.1.1.1.6.111: Unknown Object Identifier \
(Sub-id not found: (top) -> config)
显然,我无法将我的服务器的 ip 地址设置为相关的 oid。此外,我无法弄清楚第二个错误是什么意思。
有人能给我一些建议吗?任何帮助或线索都将不胜感激
多谢 :)
答案1
你最初的问题是,你试图获取配置从监控服务器,但你对 petrus 的回应表明你想复制配置到服务器,这就是您的原始示例所显示的,因此我认为这就是您所追求的。
两件事情:
1-如果数字 OIDS 的开头没有 .,这对我来说不起作用。
2 - 看起来您的 snmpget 版本中可用的 TYPE 值与 Cisco 文档中的值不匹配(它说他们使用 snmpset 的 HPOV 版本)。尝试运行不带任何参数的“snmpset”,看看会得到什么;如果您使用的是 Net-SNMP,底部附近应该有一个部分指定可用的 TYPE。
--
以下是我过去使用过的步骤,使用 Net-SNMP 和 CISCO-CONFIG-COPY-MIB(篇幅较长,请谅解):
步骤1:配置ccCopyEntryTable 包含所需协议 (tftp=1)、源文件类型 (runningConfig=4)、目标文件类型 (networkFile=1)、tftp 服务器的 IP 地址以及所需文件名在 tftp 服务器上.最后,将 RowStatus 设置为“createAndGo”(4)。
数字上:
snmpset -v 2c -c private lab-rtr1 \
.1.3.6.1.4.1.9.9.96.1.1.1.1.2.111 i 1 \
.1.3.6.1.4.1.9.9.96.1.1.1.1.3.111 i 4 \
.1.3.6.1.4.1.9.9.96.1.1.1.1.4.111 i 1 \
.1.3.6.1.4.1.9.9.96.1.1.1.1.5.111 a 10.1.1.1 \
.1.3.6.1.4.1.9.9.96.1.1.1.1.6.111 s "lab-rtr1-confg" \
.1.3.6.1.4.1.9.9.96.1.1.1.1.14.111 i 4
使用 MIB 中的文本 OID:
snmpset -O s -m CISCO-CONFIG-COPY-MIB -v 2c -c private lab-rtr1 \
ccCopyProtocol.111 i 1 \
ccCopySourceFileType.111 i 4 \
ccCopyDestFileType.111 i 1 \
ccCopyServerAddress.111 a 10.1.1.1 \
ccCopyFileName.111 s "lab-rtr1-confg" \
ccCopyEntryRowStatus.111 i 4
你应该得到类似这样的结果:
ccCopyProtocol.111 = INTEGER: tftp(1)
ccCopySourceFileType.111 = INTEGER: runningConfig(4)
ccCopyDestFileType.111 = INTEGER: networkFile(1)
ccCopyServerAddress.111 = IpAddress: 10.1.1.1
ccCopyFileName.111 = STRING: lab-rtr1-confg
ccCopyEntryRowStatus.111 = INTEGER: createAndGo(4)
第2步:查看状态:
snmpget -v 2c -c private lab-rtr1 .1.3.6.1.4.1.9.9.96.1.1.1.1.10.111
文字版:
snmpget -O s -m CISCO-CONFIG-COPY-MIB -v 2c -c private lab-rtr1 ccCopyState.111
您应该会得到“3”以表示成功(检查 MIB 以了解其他可能的值):
ccCopyState.111 = INTEGER: successful(3)
步骤3:破坏您创建的行:
snmpset -v 2c -c private lab-rtr1 .1.3.6.1.4.1.9.9.96.1.1.1.1.14.111 i 6
文字版:
snmpset -O s -m CISCO-CONFIG-COPY-MIB -v 2c -c private lab-rtr1 ccCopyEntryRowStatus.111 i 6
你应该得到类似这样的结果:
ccCopyEntryRowStatus.111 = INTEGER: destroy(6)
第四步:开始核实它实际上已被复制到 tftp 服务器。
答案2
snmpset -v 2c -c <community> <router address> OLD-CISCO-SYS-MIB::netConfigSet.<tftp server> s <config-file>
<tftp-server>
是点分十进制。
<config-file>
是相对于您的 TFTP 根的路径。
例子:
snmpset -v 2c -c private 192.168.0.254 OLD-CISCO-SYS-MIB::netConfigSet.192.168.0.10 s router-confg.txt
答案3
非常感谢您的回答。
然而,根据旧思科系统 MIB
oid 是 1.3.6.1.4.1.9.2.1.50,提示的命令是
snmpset -v2c -c public 172.23.176.71 1.3.6.1.4.1.9.2.1.50.172.23.129.4 s config
返回
Error in packet.
Reason: commitFailed Failed object: iso.3.6.1.4.1.9.2.1.50.172.23.129.4
我是否选择了合适的 OID?
此外,它看起来将配置放入交换机中,我想执行相反的传输:从交换机到服务器
感谢您的帮助