一、背景
客户要用,需求就是这么简单。简单说一下吧。网络设备太多了,传统的手动备份网络设备配置信息工作量越来越大,并且不易管理。由此就必须有一种比较简单的方式了。
二、备份方式
一、cisco设备自带kron命令+TFTP/FTP/HTTP
这种备份方式比较简单,但是有一定的局限性。因为kron命令在比较新的IOS版本上才有,有些说在12.3(4)以上才有,我测试的版本是12.2(33),也有这个命令。
但是kron命令本身并不能自动按照当前日期来命名备份文件,所以还需要脚本来帮助wanc
原理图:
操作步骤:
一、网络设备操作:
使用kron命令配置自动备份任务计划1、kron policy-list backup #创建任务计划2、cli write #保存当前网络设备配置,以防止备份信息不完整3、cli show run | redirect tftp://172.16.20.223/switch1.cfg #switch1.cfg为备份文件名,不同设备使用不同的备份文件名4、exit5、kron occurrence backup at 00:01 1 recurring #每月1日00:01执行备份6、policy-list backup #启动计划任务7、exit使用do show kron schedule命令可以查看计划任务1、do show kron schedule
二、TFTP服务器端操作步骤:
service cron restart
三、好了看看备份效果吧
二、Shell脚本(Telnet/SSH)+TFTP/FTP/HTTP
这种方式适用于ISO版本过低,没有kron命令的方式,原理就是通过在linux服务器上定时执行shell脚本登录到网络设备上备份配置信息到TFTP服务器实现网设备配置信息的自动备份。可以通过Telnet/SSh登陆,Telnet不安全,推荐SSH。如果你一定要用Telnet,那么稍微修改一下脚本就可以了。
原理图:
操作步骤
TFTP服务器端操作步骤:(和第一种方式一样,需要多装一个expect)
yum -y install expect
创建交换机配置信息文件
vi /backup/tftpboot/switch.confcisco|172.16.20.1|cisco|ciscocisco|172.16.20.2|cisco|cisco说明:一共四列,中间用竖线分割。第一列:交换机登录用户名;第二列:交换机登录IP地址;第三列:交换机登录密码;第四列:交换机enable密码;每一行为一台交换机的配置信息。
创建备份脚本
vi /backup/tftpboot/switch_backup.sh#!/bin/bashDate=`date +%F`TFTP=172.16.20.223 #TFTP服务器IP地址,只需要改这一个#我创建了两个模块,我解释一下,因为第一次访问的时候会提示你是否信任该主机,然后将该主机信息添加到known_hosts文件中,而以后访问的时候只要在known_hosts文件中发现有此主机,就不会再次询问,那么使用同一组expect语言就会报错,所以写了两个函数,一个用来第一次登陆,一个用来信任主机之后登陆,比较拙劣。first_login() {expect <<EOF spawn ssh [email protected]$server expect "(yes/no)" send "yes\r" sleep 1 expect "Password:" send "$passwd\r" sleep 1 expect "*>" send "en\r" sleep 1 expect "Password:" send "$enpasswd\r" sleep 1 expect "*#" send "copy startup-config tftp:\r" expect "Address" send "${TFTP}\r" expect "Destination" send "${server}-${Date}.conf\r" sleep 5 send "exit\r" interactEOF}login() {expect <<EOF spawn ssh [email protected]$server sleep 1 expect "Password:" send "$passwd\r" sleep 1 expect "*>" send "en\r" sleep 1 expect "Password:" send "$enpasswd\r" sleep 1 expect "*#" send "copy startup-config tftp:\r" expect "Address" send "${TFTP}\r" expect "Destination" send "${server}-${Date}.conf\r" sleep 5 send "exit\r" interactEOF}for line in `cat /backup/tftpboot/switch.conf`do name=`echo $line |awk -F "|" ‘{print $1}‘` server=`echo $line |awk -F "|" ‘{print $2}‘` passwd=`echo $line |awk -F "|" ‘{print $3}‘` enpasswd=`echo $line |awk -F "|" ‘{print $4}‘`if grep "$server" $HOME/.ssh/known_hosts > /dev/null 2>&1;thenloginelsefirst_loginfi sleep 3done
执行脚本、添加计划任务
chmod +x /backup/tftpboot/switch_backup.shecho ‘01 0 1 * * /bin/sh /backup/tftpboot/switch_backup.sh > /dev/null 2>&1‘ >> /var/spool/cron/rootchmod 600 /var/spool/cron/rootservice cron restart
网络设备操作:
a) 配置登录用户名和密码,配置enable密码
b) 配置ssh v2版本登录
OK,比较简单,到这里就结束了。来看一下效果。
OK,备份完成。
时间: 2024-12-22 08:47:00