当时我要是能想到这个技术,100多个VLAN的HSRP改VRRP脚本也就不至于搞得那么痛苦了。当时一个VLAN一个VLAN的改,不仅是费时费力,而且还让同事帮忙核对了两遍。就这样,拿到现场去实施的时候,还是发现有十几个VLAN在做HSRP改VRRP的时候出现了错误。结果是搞得头晕眼花想呕吐,脚本排版也不漂亮,还在客户那里留了个做事不细致的坏印象。
咱就来看一下吧,Cisco设备上一共100多个VLAN,全部配置的是HSRP,现在把HSRP的配置命令全部去掉,改成VRRP的配置不仅要保证H改V以后,Active是Master,Standby是Slave,同时要保留这些VLAN下的描述信息,netFlow信息,ACL调用信息和OSPF参数信息。
1
先看一下原始配置脚本
原始脚本里面提供4个VLAN的配置,可以看见这4个VLAN下的配置也是参差不齐,针对HSRP的配置也是各式各异,如果用手敲来进行替换,要么就是不美观。如果要美化这个脚本的话,手一残还容易搞错啊!
如果要做HSRP改VRRP,那我们需要做哪些调整呢:
配置需要改变的点:
HSRP改VRRP,首先“standby”关键字要改为“vrrp”,但是配置的格式不变。这些需要更改的配置必须体现在脚本内。
配置不变的点:
也就是原配置中,与描述(description),接口地址配置(ip address),ACL调用(ip access-group),NetFlow(ip flow ingress)等配置无需改变。这些配置既然无需改变,就不要写在脚本里面了,否则真的很难看,而且还容易手残给把不该改的地方改了!当然,如果不借助工具,直接删这些配置,那也容易……手残搞错
废话不多说了,现在我们就在做一个漂亮美观,无多余配置,而且100%不出错的HSRP改VRRP的配置脚本。我们需要的工具是Word、Excel、Notepad 三个工具。
2
提取关键信息
这一步骤的操作是,去除掉无需修改的配置,也就是把接口地址配置,ACL调用,描述,等信息全部去掉。
先把原始配置全部复制到Word文档中,在Word中按Ctrl A全选文本。
再点“表格”,使用“文本转换为表格”,把这些配置命令都转换为一列多行的表格,每一条命令占用一行。
现在要做的就是处理表格,把表格全部复制到一个Excel中,注意,复制到Excel时要把第一行给空出来。因为第一行要做成筛选功能行。
筛选功能开启以后,先筛选出所有以“description”开头的内容,找到以后全部删除。
然后,点击A1单元格的筛选按钮,选择“从xxx中清除筛选”。再接着按照刚才的步骤筛选并删除掉“!”,“ip access-group”,“ip flow”,“ip address”等关键字。直到筛选按钮按出来,只剩下“interface vlan”和“standby”开头的关键字。
3
生成配置脚本
把在Excel里面生成的配置,再全部复制出来到Word里面。为了防止Excel往Word里面粘贴时仍然是以表格的形式粘贴,可以考虑先把从Excel复制出来的内容,先粘贴到一个txt文件里,把格式清楚,只保留纯文本,再粘贴到Word里面。
然后,把这些命令的换行符全部取消掉。操作方式是在Word里面按Ctrl H调出替换对话窗口,把换行符“^p”去掉:
现在是不是感觉命令行全“乱套”了?别慌,乱就对了。现在我们就可以让Word暂时退出我们的历史舞台了。
把Word里面这堆乱七八糟的命令,复制到Notepad 的新建文档中,重新规划它的格式。因为在Cisco网络设备的命令行中,是先interface vlanxx,再进行standby这些配置的吧。所以,我们就在Notepad 中,设置文本针对每个“interface”关键字设置换行:
OK,现在就可以把这个整齐的文本保存成“hsrp.txt”了。注意后面没有“standby”关键字的行,这些行都是没有HSRP配置的,应该将其删掉。
将hsrp.txt复制一份,改名称为“ChangeHtoV.txt”,把“standby”命令全部替换为“vrrp”。因为VRRP的VRID的取值范围是0—255,而在这个配置中,VRRP的VRID最大值为222,没有操作最大值,所以这个脚本可以直接修改。
OK!可以,我们针对vrrp关键字进行缩进,在vrrp关键字前面加上两个空格即可。操作方式就是按Ctrl H,查找目标为“vrrp”,替换为“ [两个空格]vrrp。”然后,再把“interface”替换为“!ninterface”,就可以得到输完一组命令,加上一个Cisco的命令分割符“!”了
4
生成删除脚本
删除HSRP的配置,只需要在interface vlan下,输入no standby <id>即可,所以,把hsrp.txt的内容导入到Excel中,只需要提取最关键的部分即可。
再次打开一个空白的Excel,选择“数据”—“自文本”,导入刚才保存的hsrp.txt,分割符号选择“空格”:
删除HSRP的配置,只需要在interface vlan下,输入no standby <id>即可,所以,在刚才的Excel中,把A、B、C、D前四列复制出来,到另外一个sheet中,把第C列的standby改为no standby,然后处理掉C列中的空行(因为这表示这个SVI下就没启用HSRP。)
改好以后,就可以把内容复制回Notepad 内了。
不过,你需要注意的是,从Excel复制出来的内容,关键字之间的“间隙”不是空格,而是制表符。所以要先把制表符替换为空格。然后,这个命令行应该是先interface vlan xx,然换行输入no standby xx的,所以,还要设置相应的换行。为了保证脚本的美观,也要针对配置命令执行一些相应的缩进了注释符号(Cisco的注释符号为“!”),所以,我们再进行一次美化的操作,也能得到漂亮的删除脚本了:
我粗略计算了一下,当时做这个HSRP改VRRP脚本,一台设备就搞了一个多小时。而用这种方式,两台设备的配置半个小时搞定。只可惜当时傻了啊。