Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29975
  • 博文数量: 11
  • 博客积分: 251
  • 博客等级: 二等列兵
  • 技术积分: 110
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-23 21:31
文章分类

全部博文(11)

文章存档

2011年(11)

我的朋友
最近访客

分类: 系统运维

2011-08-11 12:57:32

作为一名网络系统管理员,常常面临管理成百甚至上千台网络设备的境况。为了及时了解网络设备配置是否在近期曾作出变更,并且在出现问题的时候能够及时比对与正确恢复,我们迫切需要一种工具,能够自动实现网络设备的自动备份。本文以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

  1. #!/usr/bin/expect -f
  2. set USERNAME username
  3. set PASSWD password
  4. set TFTP_SERVER 1.1.1.1
  5. set site [lindex $argv 0]

  6. spawn telnet $site
  7. expect "sername:"
  8. send "$USERNAME\r"
  9. sleep 1
  10. expect "assword:"
  11. send "$PASSWD\r"
  12. sleep 1
  13. expect "*#"

  14. send "copy running-config tftp:\n"
  15. expect "*Address*"
  16. send "$TFTP_SERVER\n"
  17. expect "*Destination*"
  18. send "\n"
  19. expect "*#*"
  20. send "exit\n"

脚本二:tftp.sh
其中CoreHosts中保存了要备份的主机名,建议在/etc/hosts文件中将主机名与IP做好关联,方便设备的识别与日常管理。
  1. #!/bin/bash
  2. WORKDIR=/root/SHELL/BACKUP
  3. cd $WORKDIR
  4. TODAY=`date +%Y%m%d`
  5. mkdir -p ./BAKCFG/$TODAY
  6. mkdir -p ./BAKCFG/$TODAY/CoreHosts
  7. cat CoreHosts | while read host
  8. do
  9. ./tftp.exp $host
  10. done
  11. cp /tmp/tftp/* $WORKDIR/BAKCFG/$TODAY/CoreHosts
  12. rm -rf /tmp/tftp/*

脚本三:ftp.sh
  1. #!/bin/bash
  2. PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
  3. export $PATH
  4. MONTH=`date +%Y%m`
  5. TODAY=`date +%Y%m%d`
  6. FTP_USER=username
  7. FTP_PASSWORD=password
  8. FTP_SERVER=2.2.2.2
  9. FTP_BACKUPDIR=/root/SHELL/BACKUP/BAKCFG/$TODAY
  10. FTP_FILENAME=$TODAY.tar

  11. ftp -v -n $FTP_SERVER << END
  12. user $FTP_USER $FTP_PASSWORD
  13. type binary
  14. lcd $FTP_BACKUPDIR
  15. mkdir $MONTH
  16. cd $MONTH
  17. mkdir $TODAY
  18. cd $TODAY
  19. put $TODAY.tar
  20. bye
  21. END
增加crontab项,实现每周一凌晨自动备份:
  1. 0 0 * * 1 /root/SHELL/BACKUP/tftp.sh > /dev/null 2>&1
  2. 0 1 * * 1 /root/SHELL/BACKUP/ftp.sh > /dev/null 2>&1
阅读(734) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~