首页 > 编程问答 >保存 Cisco 设备配置的 2 个字符串之间的区别

保存 Cisco 设备配置的 2 个字符串之间的区别

时间:2024-07-22 15:23:02浏览次数:15  
标签:python

我有 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 之间的差异,还可以了解这些更改在的思科设备上的影响。

标签:python
From: 77578604

相关文章

  • Python 实现Excel和TXT文本格式之间的相互转换
    Excel是一种具有强大的数据处理和图表制作功能的电子表格文件,而TXT则是一种简单通用、易于编辑的纯文本文件。将Excel转换为TXT可以帮助我们将复杂的数据表格以文本的形式保存,方便其他程序读取和处理。而将TXT转换为Excel则可以将文本文件中的数据导入到Excel中进行进一步的分析和......
  • Python (Django) 数据操作
    “如何将Excel考勤数据转换为特定的数据库插入格式?”**我Excel中的数据如下所示:**这是数据格式I**需要将其转换为适合数据库插入的格式,如下所示:**我想要的数据将Excel考勤数据转换为特定数据库插入格式的Python......
  • 在 python 中表示矩阵等价类的好方法是什么?
    我正在尝试编写一个程序来对井字棋进行强化学习。我希望引擎认识到,如果您反射棋盘或旋转它,您会得到完全相同的游戏,因此这些棋盘应该被视为彼此相同。目前我有一本字典,代表我当前对每个棋盘的估计估值游戏中的棋盘,每次游戏结束时,该游戏期间发生的所有棋盘位置的估值都会根据它......
  • MIT自学---python---6.100A_lecture2
    MIT自学---python---6.100A_lecture2前言一、设置python编译器地址二、将运行python文件的命令简化三、终端尝试执行简单python命令四、今日学到的python命令个人总结前言  这两天去听讲座,没什么时间按照计划自学MIT,今天赶紧补上。今天主要任务是搭建vscodepython......
  • python pip 需要构建工具,而它已经安装
    我看到这个问题已经被发布了很多次,人们设法解决了这个问题,但我没有!!操作系统版本:Windows1021H1Build19043.1288Python版本:Python3.9.7(tags/v3.9.7:1016ef3,Aug302021,20:19:38)[MSCv.192964bit(AMD64)]onwin32Pip、wheel和setuptool都可以日期:......
  • 无法在浏览器中访问Python 127.0.0.1:8000上的本地主机
    fromdjango.contribimportadminfromdjango.urlsimportpath,includeurlpatterns=[path('admin/',admin.site.urls),path('products/'),include('products.urls')#thisline]嗨,任何人。很抱歉问这样的问题,但这是我第一次尝试python。......
  • 在 VSCode 中通过 Python 使用 YouTube API 时如何启用 Intellisense
    我想在使用GoogleYouTubeAPI和Python时在VSCode中获得IntelliSense。但我不知道详细步骤。fromgoogleapiclient.discoveryimportbuildapi_key="****"youtube=build("youtube","v3",developerKey=api_key)request=youtube.channels().list(part......
  • 当 python 脚本通过 jenkins + Github 在 Windows 本地计算机上运行时,chrome 浏览器不
    我的Python代码是(windowsMachine)fromseleniumimportwebdriverprint("newLine")print("2Line")print("3Line")holdChrome=webdriver.ChromeOptions()holdChrome.add_experimental_option("detach",True)#Restricta......
  • python_基础_数据类型
    基础数据类型不需要声明,只有被赋值后才会创建变量。变量本身没有类型,“类型”指的是所存值的类型。类型判断type(x)和isinstance(x,int)前者不会认为子类是一种他的父类类型后者会认为子类是父类类型>>>classA:...pass...>>>classB(A):...pass......
  • IPython 使用技巧
    IPython是一个强大的交互式Pythonshell,提供了许多方便的功能,使Python编程更加高效和愉快。本文将介绍一些IPython的实用技巧,帮助开发者充分利用其功能,提高编程效率。1.基本操作和快捷键1.1启动IPython可以通过在终端输入以下命令来启动IPython:ipython启动后,你......