作为一名网络系统管理员,常常面临管理成百甚至上千台网络设备的境况。为了及时了解网络设备配置是否在近期曾作出变更,并且在出现问题的时候能够及时比对与正确恢复,我们迫切需要一种工具,能够自动实现网络设备的自动备份。本文以expect为例,介绍如何实现cisco路由器的配置备份,自动打包,并上传到FTP服务器。
环境:
1) 操作系统:CentOS release 5.5 (Final)
2) 工具:tcl-8.4.13-4.el5, expect-5.43.0-5.1
expect是一种简单的脚本语言,主要用来解决交互式程序输入自动化的问题。如果操作系统本身没有预先安装expect,对于类redhat操作系统,可以通过yum -y install expect进行安装。
如下为各个脚本示例:
脚本一:tftp.exp
- #!/usr/bin/expect -f
- set USERNAME username
- set PASSWD password
- set TFTP_SERVER 1.1.1.1
- set site [lindex $argv 0]
- spawn telnet $site
- expect "sername:"
- send "$USERNAME\r"
- sleep 1
- expect "assword:"
- send "$PASSWD\r"
- sleep 1
- expect "*#"
- send "copy running-config tftp:\n"
- expect "*Address*"
- send "$TFTP_SERVER\n"
- expect "*Destination*"
- send "\n"
- expect "*#*"
- send "exit\n"
脚本二:tftp.sh
其中CoreHosts中保存了要备份的主机名,建议在/etc/hosts文件中将主机名与IP做好关联,方便设备的识别与日常管理。
- #!/bin/bash
- WORKDIR=/root/SHELL/BACKUP
- cd $WORKDIR
- TODAY=`date +%Y%m%d`
- mkdir -p ./BAKCFG/$TODAY
- mkdir -p ./BAKCFG/$TODAY/CoreHosts
- cat CoreHosts | while read host
- do
- ./tftp.exp $host
- done
- cp /tmp/tftp/* $WORKDIR/BAKCFG/$TODAY/CoreHosts
- rm -rf /tmp/tftp/*
脚本三:ftp.sh
- #!/bin/bash
- PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
- export $PATH
- MONTH=`date +%Y%m`
- TODAY=`date +%Y%m%d`
- FTP_USER=username
- FTP_PASSWORD=password
- FTP_SERVER=2.2.2.2
- FTP_BACKUPDIR=/root/SHELL/BACKUP/BAKCFG/$TODAY
- FTP_FILENAME=$TODAY.tar
- ftp -v -n $FTP_SERVER << END
- user $FTP_USER $FTP_PASSWORD
- type binary
- lcd $FTP_BACKUPDIR
- mkdir $MONTH
- cd $MONTH
- mkdir $TODAY
- cd $TODAY
- put $TODAY.tar
- bye
- END
增加crontab项,实现每周一凌晨自动备份:
- 0 0 * * 1 /root/SHELL/BACKUP/tftp.sh > /dev/null 2>&1
- 0 1 * * 1 /root/SHELL/BACKUP/ftp.sh > /dev/null 2>&1
阅读(734) | 评论(0) | 转发(0) |