[摘要] 交换机配置文件的备份是网络维护工作的一项重要内容,大型企业网中一般有不同规格型号的交换设备数百台,使得手动备份的工作相当繁琐。为解决交换设备配置文件批量和自动备份问题,使用Visual Basic.开发的一个运行在WINDOWS环境下的软件,利用交换机备份数据表、WinSock控件和DoEvent函数等,有效地进行批量工作,并得到了较好的应用效果。
[关键词] 交换机配置文件 交换机备份数据表 WinSock控件 程序运行控制点
1 引言
交换机配置文件的备份是交换机日常维护工作的一项重要内容[1-2],当出现突然断电和人为操作失误,就有可能使得交换机里的配置文件发生混乱或丢失。若交换机发生硬件故障而更换时,原交换机的配置文件会由于硬件的损坏而无法导出,这时利用保存在计算机上的这些备份文件就可以迅速恢复交换机配置。
大型企业网中一般有几百台多种品牌及不同系列的交换设备,备份时使用的命令格式亦不相同。一般由多个网管人员分片负责这些交换设备的备份工作,难以做到同步和统一管理。因此,探索高效批量进行交换机配置文件备份工作也引起广大网管运维人员的关注[3-6]。
本文利用Visual Basic开发了一个可以批量备份交换机配置文件的软件,经实际应用效果良好,若使用“任务计划”设置功能,即可在Windows系统中实现定时自动执行。
2 系统设计思想
本软件运行在WINDOWS操作系统之下,在一个表中放置网络中交换机(可含路由器和防火墙等设备)有关参数,程序处理每行数据生成配置文件的存放树状目录,然后通过开启FTP服务器和反复调用Winsock控件,传送交换机配置文件到对应目录下,最终完成网络系统中全部交换设备的配置文件备份工作。
2.1 利用交换机备份数据表实现软件通用性
考虑到企业中网络交换设备型号不同,拓扑结构不同,交换设备配置文件名不同,以及每台交换机在局域网中的IP地址、登录用户名及口令亦不同,为了让程序自动对这些交换设备一一做出备份处理,有必要预先将这些数据放置在一个表中。本软件使用一个称之为“交换机备份数据表”的表格做这项工作。如表1所示(这里仅列出表头)。
表1 交换机备份数据表(表头)

只要根据不同企业的具体情况填写该表,就能完成该企业的交换机配置文件备份工作。
填制规则如下:用(X,Y)表示第X行,第Y列。
(1,2)备份文件存放的根目录名,运行软件后生成的目录名后带有当天的日期字串;(1,4)指明目录建在那个驱动器上,如填D,指明目录建在D驱上。
第一行其他列是说明文字,不需写入。第二行所有单元为说明文字,不需写入;
第三行起所有内容根据本单位网络设备情况进行分类填写。目的是使生成的目录树条理清晰,各备份文件便于管理。目录自存放文件的根目录之下最多可以延伸五层,可以满足复杂的结构。比如:某单位备份目录第一层按楼宇划分,第二层按内外网划分,第三层按楼层划分,第四层按部门划分,第五层固定为堆叠数。实际填写中需要几层填写几层,空着的部分系统会自动处理。下面按列说明:
第一列:第一层目录名,如其后若干行同属这个目录下,则其后行的该列空着不用填。例如:按位置分为核心机房,一号楼,二号楼,三号楼,实验楼等;
第二列:第二层目录名,填法同上。例如:按内外网划分为内网和外网;
第三列:第三层目录名,填法同上。例如:按楼层设第三层目录,如:1楼,2楼,…25楼等。不填则说明不设该层;
第四列:第四层目录名,填法同上。不填则说明不设该层;
第五列:固定。按交换机堆叠数填写,无堆叠则是1,有堆叠则为2至4之间的数;
第六列:型号,用数字代表。1为华为,2为华三,3为思科;其余列的含义见表1第二行对应说明。
2.2 使用WinSock控件实现对交换机处理
VB的WinSock控件,其内部封装了几乎所有的Internet协议,而以类的形式提供了属性、方法和事件,使得编写Internet网络程序得以简化。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式,它为用户提供了在本地计算机上完成远程主机工作的能力[7]。利用WinSock控件编程,即可实现Telnet功能登陆交换机,对交换机进行处理[8,9]。
本软件中涉及到的WinSock控件属性有:RemoteHost(指定远程交换机IP),RemotePort(指定远程交换机通信端口23:Telnet使用端口),LocalIP(获取本机IP,用于指定FTP服务器地址),Protocal(使用TCP协议),State(连接的当前状态,据此决定程序的走向)。
涉及到的WinSock控件方法有:Connect(向交换机发出连接请求),Senddata(向交换机发送一系列数据,如用户名、口令、FTP命令,传送备份文件命令,退出交换机等),Getdata(接收来自交换机的数据,并随时清空缓存,准备接收下一组数据),Close(关闭与交换机的连接)。
涉及到的WinSock控件事件有:Close(交换机关闭连接时触发),Connect(交换机与本机连接建立好可以进行通信时触发),DataArrival(交换机有数据到达计算机时触发),Error(本机与交换机连接及传输过程中发生错误时触发)。
当向交换机发出连接请求,响应后连接建立好,Connect事件被触发。在该事件中写有如下代码:(以华为华三交换机为例)
WinSock.SendData登陆用户名字串&vbCrLf
WinSock.SendData登陆口令字串&vbCrLf
WinSock.SendData切换到交换机某单元字串&vbCrLf
WinSock.SendData进入FTP Client视图字串&vbCrLf
WinSock.SendData登陆FTP用户名字串&vbCrLf
WinSock.SendData登陆FTP口令字串&vbCrLf
WinSock.SendData交换机配置文件上传FTP服务器字串&vbCrLf
WinSock.SendData“quit”&vbCrLf(终止与远程FTP服务器的连接)
WinSock.SendData“quit”&vbCrLf(终止与远程计算机的连接)
以上就是计算机向交换机发送的从登陆、到配置文件上传到FTP服务器、直至退出交换机视图的全部交换机命令。
由于是远程操作,考虑到交换机对每一个送给它的字串命令有一个响应过程,故每发送一个字串命令,其后就跟一个延时Sleep函数,使当前进程等待100 ms~300 ms。
FTP服务器设在运行程序的计算机上,而不使用交换机本身自带的FTP服务器,以节省交换机资源。连接成功后,每当发送的指令得到交换机响应,就会向计算机发送回数据,触发DataArrival事件。使用Getdata方法从缓冲区中取出数据,并清空相应的缓冲区,等待DataArrival事件的再次触发。
一旦本机与交换机连接及传输过程中发生错误,就会触发Error事件。在该事件中编写代码,对应可能出现的几十种错误代码,出现时将错误类型说明显示在文本框中。以便知道故障原因。
2.3 对交换机处理时VB程序呈等待状态
由于WinSock控件的各事件是由消息驱动,在进入WinSock控件事件处理时,VB程序应让出程序控制权进入等待状态,直至WinSock控件当前的状态变为连接关闭状态,表明对一台交换机的处理过程结束。
每读入“交换机备份数据表”一行数据,调用WinSock控件的Connect方法,向交换机发出连接请求。一旦连接成功,则使用DoEvents函数转让程序控制权,进行WinSock事件处理。而让系统处理流程进入一个While Wend循环等待,直至WinSock控件事件处理完毕、当前连接关闭,方进入到后面的处理。如图1所示。

图1 系统处理流程
2.4 设置控制点当错误发生时中断程序运行
对交换机进行处理的过程是一个远程处理过程,网络环境和交换机状态等因素都可能对处理过程产生干扰,使得WinSock控件的事件处理产生错误,这样就不能保证每台交换机都能顺利的完成备份工作。例如某台交换机正处于频繁交换数据状态时,由计算机发出的命令行就可能得不到正确的响应。另外交换机备份数据表的数据填写错误,同样会使处理操作不能正常完成。如此配置文件不能按要求传送到计算机指定的目录下,如果主程序继续进行下去,将导致配置文件存放位置混乱。
为此采用了如下处理:在整个运行过程中,只要处理到某台交换机时发生上述问题,则程序立即停止运行自动跳出,并给出错误提示。如果是WinSock错误,会弹出错误代码对应的错误类型,表明这台交换机的备份工作没有完成。若无其他问题则考虑在局域网空闲时间进行备份,或者删除该行数据,暂不进行这行数据所对应交换机的备份。不能顺利完成备份数据的情况在处理核心交换机时较易出现,因此,对于核心交换设备的备份,应该选在工作不繁忙时间段进行。
在程序中具体的处理措施是:每完成一次WinSock处理过程,如果成功,则配置文件将被传送到位于计算机上的FTP服务器主目录中,随之WinSock的当前连接将关闭。主程序在跳出While Wend循环后,首先判断FTP主目录中的配置文件是否存在,如果不存在则说明处理过程没有正常完成,这时主程序关闭交换机备份数据表和终止程序,并提示是在处理“交换机备份数据表”中哪行数据时发生的错误,以免程序继续运行造成数据存放错误。如果FTP主目录中存在所需的配置文件,则说明处理过程正常完成,于是拷贝这个备份文件到备份目录树的指定叶子目录下,并立即清空FTP主目录,然后转入对下一台交换机的处理过程,这样就保证了程序执行的过程中不会发生存放目录错位的事件。
3 软件应用效果
点击“备份交换机配置文件”命令按钮即可进入备份过程。备份进行时,随着交换机配置文件的成功传输,将在文本框中向上滚动显示结果,同时主界面上的进度条也随着工作的进行不断推进,如图2所示。

图2 备份工作进行时的界面
当交换机备份工作正常结束后,显示“备份工作结束”界面,如图3所示

图3 程序运行结束界面
4 结束语
交换设备(含交换机、路由器和硬件防火墙等)配置文件的备份工作是企业网管人员必做的一项维护工作,大批量用手工备份就显得费时费力。本文借鉴以往有关文献思路,编制出网络交换机配置文件的批量(自动)备份软件,在局域网中使用微机就可进行该工作。而且应用还可以扩展到对企业网中交换机灵活进行其他的批量操作,如成批静态路由配置,以太网端口流量控制,批量检查交换机风扇好坏等工作。