是否可以通过 SNMP 配置运行 IOS 的 Cisco 交换机?我知道有一种通过 SNMP 启动 TFTP 复制的方法(文档),但是是否有类似直接从 SNMP 写入的端口级别配置?
或者,有没有办法启动传输配置片段以应用,而不是替换整个配置?
如果您需要澄清任何内容,请告诉我。我试图避免使用 Expect 或任何与访问 API 不相似的东西。
答案1
回答我自己的问题,思科似乎没有通过 SNMP 提供高粒度配置(例如,端口配置),但它确实提供了一种启动 FTP/TFTP/SCP 配置复制到交换机的方法。此复制可以执行到允许合并的运行配置。这意味着可以将配置片段写入文本文件,然后通过 TFTP 发送到交换机,该交换机将与运行配置合并,而不是替换它。如果复制到起始配置,则不会执行合并操作,因此它会替换整个配置。一个重要的区别 ;)
详情请见此处:http://www.cisco.com/en/US/tech/tk648/tk362/technologies_configuration_example09186a0080094aa6.shtml
答案2
是的,有可能。请参阅关于配置 VLAN 的技术说明举个例子。
show snmp mib
您可以通过从启用的终端运行命令来查看交换机支持哪些 MIB 。
答案3
说实话,我不知道有什么原因不能通过 SNMP 配置 IOS... 不过我建议不是这样做。SNMP 非常不安全。如果您不担心安全性,您可以简单地将配置更改转储到文本文件中,然后盲目地将它们重放到 telnet 会话中……我也不建议这样做。
答案4
我还没有看到任何使用 snmpv3 和 scp 作为传输协议的 snmp 指南。对于那些希望实施的人,以下是对我有用的方法。
与其他 snmp 配置复制指南一样,您需要下载相应的 MIBS 并将其加载到 snmp.conf 文件中。
这篇文章将专门介绍 v3 设置的 snmpset 命令。
SNMP Environment:
Name : net-snmp
Version : 5.7.2
Release : 17.fc20
snmp conf 文件位于 ~/.snmp/snmp.conf
包含
defSecurityName XXX <- replace with v3 username
defContext ""
defAuthType SHA
defPrivType AES
defSecurityLevel authPriv
defAuthPassphrase ***** <-replace with authentication pass
defPrivPassphrase ***** <-replace with encryption pass
defVersion 3
showMibErrors no
mibs ALL
我会使用 snmpwalk 验证 sysUpTime 等简单程序的基本 snmpv3 功能。如果一切顺利,请继续执行 CONFIG-COPY snmp 命令。
这是我的 bash 脚本,它执行整个复制,仅要求提供被备份设备的 IP/主机名这一单个参数。脚本中或下面的 cli 中显示的 2>/dev/null 将 STDERR 重定向到 null,以避免 MIB 模块解析错误。
#!/usr/bin/bash
DEVICE=$1
RANNUM=42
USER=******
PASS=******
SERVER=X.X.X.X
DATE=$(date +"%m_%d_%y")
snmpset $DEVICE ccCopyProtocol.$RANNUM i 4 ccCopySourceFileType.$RANNUM i 4 ccCopyDestFileType.$RANNUM i 1 ccCopyServerAddress.$RANNUM a "$SERVER" ccCopyFileName.$RANNUM s "$DEVICE.$DATE" ccCopyUserName.$RANNUM s $USER ccCopyUserPassword.$RANNUM s $PASS ccCopyEntryRowStatus.$RANNUM i 4 2>/dev/null
一旦运行,您可以使用以下命令检查副本的状态。
[root@localhost hlsb]# snmpwalk sbs-tech-switch ciscoConfigCopyMIB 2>/dev/null
CISCO-CONFIG-COPY-MIB::ccCopyProtocol.42 = INTEGER: scp(4)
CISCO-CONFIG-COPY-MIB::ccCopySourceFileType.42 = INTEGER: runningConfig(4)
CISCO-CONFIG-COPY-MIB::ccCopyDestFileType.42 = INTEGER: networkFile(1)
CISCO-CONFIG-COPY-MIB::ccCopyServerAddress.42 = IpAddress: 10.10.10.193
CISCO-CONFIG-COPY-MIB::ccCopyFileName.42 = STRING: sbs-tech-switch.07_09_14
CISCO-CONFIG-COPY-MIB::ccCopyUserName.42 = STRING: XXXX
CISCO-CONFIG-COPY-MIB::ccCopyUserPassword.42 = STRING: XXXX
CISCO-CONFIG-COPY-MIB::ccCopyNotificationOnCompletion.42 = INTEGER: false(2)
CISCO-CONFIG-COPY-MIB::ccCopyState.42 = INTEGER: successful(3)
CISCO-CONFIG-COPY-MIB::ccCopyTimeStarted.42 = Timeticks: (52270199) 6 days, 1:11:41.99
CISCO-CONFIG-COPY-MIB::ccCopyTimeCompleted.42 = Timeticks: (52270339) 6 days, 1:11:43.39
CISCO-CONFIG-COPY-MIB::ccCopyEntryRowStatus.42 = INTEGER: active(1)
CISCO-CONFIG-COPY-MIB::ccCopyServerAddressType.42 = INTEGER: ipv4(1)
CISCO-CONFIG-COPY-MIB::ccCopyServerAddressRev1.42 = STRING: "10.10.10.193"
成功复制完成后,该条目将存在五分钟,不允许使用该特定随机数发出进一步的请求。要在五分钟清除表之前发送另一个请求,请发送“destroy”snmpset 以清除该条目。
[root@localhost hlse]# snmpset sbs-tech-switch CISCO-CONFIG-COPY-MIB::ccCopyEntryRowStatus.42 i 6 2>/dev/null
CISCO-CONFIG-COPY-MIB::ccCopyEntryRowStatus.42 = INTEGER: destroy(6)
希望这将为那些希望实现更安全的 snmp 配置复制设置的人节省一些时间。