我想让我的 Cisco 路由器每 1 分钟自动执行一次复制运行 TFTP(并自动填充字段)。我也希望它在后台运行。任何人都知道这是否可能/如何做到?我想这样做是为了在记事本++(实时更新)中查看我的路由器的运行配置,而不是在到达我需要查看的内容之前执行显示运行并按空格键 4 或 5 次。我认为这对复杂的实验室非常有用。此外,由于需要输入的 TFTP 服务器命令,宏不起作用。
在 Cisco IOS 中自动进行配置备份(每分钟)
您有多种选择可以在 Cisco 设备上获得此类功能。(您使用哪一种取决于您的需求,有时取决于设备和 IOS 负载。一些较旧的设备/IOS 负载将具有不同的功能。)
编辑: 您要求每隔一分钟执行一次此操作,正如您在我们关于此问题的聊天中发现的那样,这会使您的路由器陷入困境。(特别是在 GNS3 中。)以下选项可用于自动配置备份,但我不建议每 1 分钟执行一次。
你可以:
使用 Cisco 的Kron 功能进行命令调度。这将允许您按计划执行预定义的命令。正如您所指出的,
copy run tftp
需要文件提示确认。(除非您关闭了文件提示确认,但我不建议将其作为正常设置。)重定向不需要确认。所以调度器中使用的命令是show run | redirect tftp://$SERVERIP/$PATH/$FILE
使用 Cisco 的存档功能进行配置管理。存档是一种以顺序方式存储配置的多个副本并在需要时将配置回滚到先前版本的方法。使用 Kron 复制会覆盖之前的配置,而 Archive 允许您在指定位置保留多达 14 个不同的配置版本。有关存档的更多有用信息,请参阅Cisco 学习网络上的此链接。具体如何使用 $h 和 $t 标签动态设置文件名。
在以下任一示例中,您都可以根据自己的需要调整时间,这些正是我从一些生产设备中快速提取出来的。
让 Kron 每周编写一次配置并将其备份到 tftp 服务器的示例配置:
kron occurrence SaveConfig at 23:50 Mon recurring
policy-list SaveConfig
!
kron occurrence BackupRunningConfig at 23:55 Mon recurring
policy-list BackupRunningConfig
!
kron policy-list SaveConfig
cli write
!
kron policy-list BackupRunningConfig
cli show running-config | redirect tftp://10.10.10.10/configs/testswitch.txt
让 Archive 每天将您的配置备份到 tftp 服务器的示例配置:
archive
path tftp://10.10.10.10/configs/$h-$t
time-period 1440
maximum 14
有实际上的另一种方式。
您可以使用 SNMP 触发 TFTP 复制。它不是非常直接,但非常有用。
首先,您需要一个 TFTP 服务器(不出所料)。您还需要可以发送 snmp 请求的东西。我已经使用 Linux 的 snmp 工具有效地完成了它。
您需要为 SNMP 设置一个具有有限写入访问权限的新社区,并可能使用 IP ACL 进一步锁定它。实际上,您只需要能够写入ccCopyTable
OID。
在 Linux 方面,您需要以下 MIB(为了可读性,而不是功能)
CISCO-CONFIG-COPY-MIB
CISCO-SMI
CISCO-ST-TC
将 MIB 安装在 Linux 上的 SNMP 配置的相关位置后,您应该能够测试与 snmptable 的连接:
snmptable -v2c -c writeCommunity 192.168.1.1 ccCopyTable
CISCO-CONFIG-COPY-MIB::ccCopyTable: No entries
您通常需要在 TFTP 服务器上预先创建文件以供路由器复制到。
为了触发 TFTP 复制,您需要在ccCopyTable
.
snmpset
允许你这样做。
# snmpset -v2c -c writeCommunity 192.168.1.1 \
> ccCopyProtocol.23 i tftp \
> ccCopySourceFileType.23 i runningConfig \
> ccCopyDestFileType.23 i networkFile \
> ccCopyServerAddress.23 a 192.168.1.100 \
> ccCopyFileName.23 s router.conf
CISCO-CONFIG-COPY-MIB::ccCopyProtocol.23 = INTEGER: tftp(1)
CISCO-CONFIG-COPY-MIB::ccCopySourceFileType.23 = INTEGER: runningConfig(4)
CISCO-CONFIG-COPY-MIB::ccCopyDestFileType.23 = INTEGER: networkFile(1)
CISCO-CONFIG-COPY-MIB::ccCopyServerAddress.23 = IpAddress: 192.168.1.100
CISCO-CONFIG-COPY-MIB::ccCopyFileName.23 = STRING: router.conf
完成后,您应该能够重新运行第一个命令,并在 ccCopyTable 中看到复制命令。
snmptable -v 2c -c writeCommunity 192.168.1.1 ccCopyTable
SNMP table: CISCO-CONFIG-COPY-MIB::ccCopyTable
index Protocol SourceFileType DestFileType ServerAddress FileName UserName
23 tftp runningConfig networkFile 192.168.1.100 router.conf ?
SNMP table CISCO-CONFIG-COPY-MIB::ccCopyTable, part 2
index UserPassword NotificationOnCompletion State TimeStarted TimeCompleted
23 ? false ? ? ?
SNMP table CISCO-CONFIG-COPY-MIB::ccCopyTable, part 3
index FailCause EntryRowStatus ServerAddressType ServerAddressRev1
23 ? ? ipv4 "192.168.1.100"
除非您在 ccCopyTable 上设置另一列以激活该行,否则不会发生任何事情。
snmpset -v2c -c writeCommunity 192.168.1.1 \
> ccCopyEntryRowStatus.23 i active
如果您再次检查 ccCopyTable,您应该看到 State 和 TimeStarted 已更新以反映文件已被复制。
下面的源链接中有更多详细信息,包括如何清空 ccCopyTable(如果您愿意)。
我在来自 Linux 服务器的脚本中使用了相同的方法来触发 TFTP 副本,然后将文件提交到 git,并将其推送回存储库,所有这些都在一个快速过程中完成。
来源:http : //www.ciscozine.com/2013/08/22/how-to-save-configurations-using-snmp/
和 http://bodgitandscarper.co.uk/networks/using-snmp-to-trigger-cisco-tftp-backups/
您可以使用EEM
例子:
event manager applet dumpconfig
event timer {absolute time time-value | countdown time time-value | cron cron-entry cron-entry | watchdog time time-value} [name timer-name]
action 1.0 cli command "enable"
action 2.0 cli show running-config | redirect tftp://10.10.10.10/configs/testswitch.txt
action 998.0 cli command "end"
action 999.0 cli command "exit"
您可以使用RANCID来执行此操作。
你会得到一些其他的好东西,比如配置的版本控制、电子邮件差异和其他好东西(默认情况下它需要一个硬件清单,所以如果硬件发生变化,你会收到警报)。
它适用于我迄今为止投入的所有交换机和路由器(Cisco/Juniper/Dell),这是另一个优点。