我想让我的Cisco路由器每1分钟自动执行一次复制运行TFTP(并自动填充字段)。我也希望它在后台运行。有人知道这是否可行吗?我这样做是为了在notepad ++(它会实时更新)中查看路由器的运行配置,而不是必须进行show run并按空格键4或5次才能到达需要查看的内容。我认为这对于复杂的实验室非常有用。另外,由于TFTP服务器命令需要输入,因此宏不起作用。
我想让我的Cisco路由器每1分钟自动执行一次复制运行TFTP(并自动填充字段)。我也希望它在后台运行。有人知道这是否可行吗?我这样做是为了在notepad ++(它会实时更新)中查看路由器的运行配置,而不是必须进行show run并按空格键4或5次才能到达需要查看的内容。我认为这对于复杂的实验室非常有用。另外,由于TFTP服务器命令需要输入,因此宏不起作用。
Answers:
您可以通过多种方法在Cisco设备上获得这种功能。(使用哪种设备取决于您的需求,有时取决于设备和IOS负载。某些较旧的设备/ IOS负载将具有不同的功能。)
编辑: 您正在询问每隔一分钟要执行一次此操作,正如您在我们的聊天室中发现的那样,它将使您的路由器停滞不前。(尤其是在GNS3中。)以下选项可用于自动配置备份,但是我不建议每1分钟这样做一次。
您可以:
使用思科的Kron功能进行命令调度。这将允许您按计划执行预定义的命令。如您所指出的,copy run tftp
需要文件提示确认。(除非您已关闭文件提示确认,但是我不建议您将其作为常规设置。)重定向不需要确认。所以在调度程序中使用的命令是show run | redirect tftp://$SERVERIP/$PATH/$FILE
使用思科的存档功能进行配置管理。存档是一种以顺序方式存储配置的多个副本并在需要时将配置回滚到先前版本的方法。用Kron复制出来将覆盖以前的配置,而“存档”允许您在指定位置保留多达14个不同的配置版本。有关存档的更多有用信息,请参阅Cisco Learning网络上的此链接。特别是如何使用$ 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
在Linux上的SNMP配置的相关位置安装了MIB之后,您应该能够测试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中看到copy命令。
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"
fetchconfig是用于此的另一个工具:
fetchconfig是一个Perl脚本,用于检索多个设备的配置。它已经过Linux和Windows的测试,目前支持各种设备,包括Cisco IOS,Cisco Catalyst,Cisco ASA,Cisco PIX,FortiGate防火墙,ProCurve,阿尔卡特以太网路由器(又名Riverstone),Dell PowerConnect交换机,Terayon 3200 / 3500 CMTS,Datacom DmSwitch交换机,HP MSR路由器,Mikrotik路由器,Tellabs MSR路由器,Juniper EX交换机JunOS,Oracle Acme数据包,音频代码中介,Cisco IOS XR,NEC Univerge IX。
| include
还是| exclude
?我正在努力查看能够“实时”查看正在运行的配置的有用性。