我有 2 个变量,config1 和 config2 保存 Cisco 设备在 2 个不同时间点的运行配置。
运行配置示例:
version 12.3
no service pad
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname retail
!
boot-start-marker
boot-end-marker
!
enable password cisco123
!
username jsomeone password 0 cg6#107X
aaa new-model
!
aaa group server radius rad_eap
server 10.0.1.1 auth-port 1812 acct-port 1813
!
aaa authentication login eap_methods group rad_eap
aaa session-id common
ip subnet-zero
ip cef
!
vpdn enable
vpdn-group 1
request-dialin
protocol pppoe
!
interface dialer 1
ip address negotiated
ppp authentication chap
dialer pool 1
dialer-group 1
!
dialer-list 1 protocol ip permit
ip nat inside source list 1 interface dialer 0 overload
ip classless (default)
ip route 10.10.25.2 0.255.255.255 dialer 0
!
ip dhcp excluded-address 10.0.1.1 10.0.1.10
ip dhcp excluded-address 10.0.2.1 10.0.2.10
ip dhcp excluded-address 10.0.3.1 10.0.3.10
!
ip dhcp pool vlan1
network 10.0.1.0 255.255.255.0
default-router 10.0.1.1
!
config1 保存默认配置,config2 保存测试后的配置。最终,config2应该与config1相同。
我需要的是一种找到config2和config1(config2-config1)之间“差异”的方法。我从 https://text-compare.com/ 等网站获得的内容显示了并排比较。
当然,需要一种可靠的方法来比较两个思科配置并突出显示差异。并排比较工具(例如提到的工具)是开始的好方法,但对于理解配置更改来说,它们可能并不总是足够的。
以下是一些用于比较思科设备配置并找到
config2 - config1
的更好选择:
1. 基于行的差异工具:
- 命令行工具:
-
diff:
这是 Linux 和 macOS 上的标准实用程序。使用
diff -u config1.txt config2.txt
以统一 diff 格式查看更改。 -
fc(在 Windows 上):
此命令以类似于
diff
的方式工作。使用fc /u config1.txt config2.txt
。 - 基于 GUI 的工具:
- Notepad++(带有比较插件): Notepad++ 是一个流行的代码编辑器,具有可实现并排比较的插件。
- Beyond Compare、WinMerge、Meld: 这些是专用的差异/合并工具,提供更高级的功能,例如突出显示语法和逐行导航。
优点: * 简单,易于使用。 * 突出显示已添加、删除或修改的特定行。
缺点: * 上下文有限: 可能难以理解更改在更广泛的配置中的含义。 * 对思科配置的理解有限: 将命令视为纯文本,可能无法识别配置中的细微但重要的差异。
2. 思科专用配置比较工具:
- Cisco Configuration Professional (CCP): 这款免费工具允许比较、合并和部署配置。它了解思科配置语法,可以提供更有意义的差异。
- SolarWinds Network Configuration Manager: 这是一款商业产品,提供高级配置管理,包括比较、备份和合规性检查。
-
RANCID:
这是一组旨在跟踪和管理网络设备配置的工具。它包括一个
cdiff
实用程序,可用于比较配置。
优点: * 思科配置感知: 能够解析配置并提供更智能的比较。 * 上下文信息: 可以显示配置更改的影响。 * 其他功能: 通常包括备份、版本控制和合规性检查等功能。
缺点: * 一些是商业工具: 可能需要额外费用。 * 学习曲线: 与简单的基于行的差异相比,可能需要更多时间来学习。
3. Python 脚本(用于定制):
可以使用 Python 库(如
difflib
或
ciscoconfparse
)编写自己的脚本来自动执行比较并以喜欢的方式输出结果。
优点: * 灵活性: 完全控制比较过程和输出。 * 自动化: 可以集成到脚本或更大的网络管理系统中。
缺点: * 需要编程知识: 编写和维护脚本需要 Python 技能。
选择哪种方法?
-
对于快速简便的比较,
基于行的差异工具
(如
diff
或 Notepad++ 比较插件)就足够了。 - 对于更深入的分析和思科特定的见解,请考虑使用 Cisco Configuration Professional 或 SolarWinds Network Configuration Manager 等工具。
- 如果需要自动化或自定义解决方案, Python 脚本 是一个不错的选择。
通过使用这些方法,不仅可以识别
config2
和
config1
之间的差异,还可以了解这些更改在的思科设备上的影响。