设为首页 收藏本站
查看: 781|回复: 0

[经验分享] Cisco设备配置文件定期备份

[复制链接]

尚未签到

发表于 2018-7-19 13:40:16 | 显示全部楼层 |阅读模式
  Cisco设备配置文件定期备份
  一、需求和应对之策
  公司IDC机房几台交换机和防火墙设备,因业务需要,经常在交换机上或防火墙上修改配置文件,虽说Cisco设备稳定性很好,但做好备份,可以防万一。
  网上有很多关于Cisco设备定期备份的文章,个人根据公司实际情况写了个备份脚本。
  个人采用自动交互expect获取Cisco设备的配置文件,让后通过FTP上传到FTP服务器。
  该脚本是放在Centos6.5服务器上,每周六晚上23:00执行。
  二、线上脚本
  1.脚本所在目录介绍
[root@localhost cisco_bak]# pwd/usr/local/scripts/cisco_bak  
[root@localhost cisco_bak]# ls
  
cfg  cisco_bak.sh  ip_asa.txt  ip_switch.txt  telnet_asa.exp  telnet_switch.exp
  
up_cfg.sh
  2.文件及目录介绍
  cfg是存放备份的Cisco设备的配置文件。
  telnet_switch.exp是通过Expect获取Cisco交换机的配置文件的。
[root@localhost cisco_bak]# cat telnet_switch.exp  
#!/usr/bin/expect
  
#This script is get switch cfg.
  
set timeout 60
  
set ip [lindex $argv 0]
  
set password [lindex $argv 1]
  
spawn /usr/kerberos/bin/telnet $ip
  
expect "Password:"
  
send "$password\r"
  
expect ">"
  
send "enable\r"
  
expect "Password:"
  
send "$password\r"
  
expect "#"
  
send "show running-config\r"
  
while {1} {
  
    sleep 1
  
    expect {
  
    "*More--" {send " "}
  
    "*#" {break}
  
    }
  
}
  
send "exit\r"
  
expect eof
  telnet_asa.exp是通过Expect获取Cisco防火墙的配置文件的。
[root@localhost cisco_bak]# cat telnet_asa.exp  
#!/usr/bin/expect
  
#This script is get switch cfg.
  
set timeout 60
  
set ip [lindex $argv 0]
  
set password [lindex $argv 1]
  
spawn /usr/kerberos/bin/telnet $ip
  
expect "*assword:"
  
send "$password\r"
  
expect ">"
  
send "enable\r"
  
expect "Password:"
  
send "$password\r"
  
expect "#"
  
send "show running-config\r"
  
while {1} {
  
    sleep 1
  
    expect {
  
    "*More --->" {send " "}
  
    "*#" {break}
  
    }
  
}
  
send "exit\r"
  
expect eof
  ip_switch.txt存放交换机的IP和密码。(我修改了,不能用公司的真实IP和密码。)
[root@localhost cisco_bak]# cat ip_switch.txt  
10.10.10.1   123
  
10.10.20.1   123
  ip_asa.txt存放防火墙的IP和密码。(我修改了,不能用公司的真实IP和密码。)
[root@localhost cisco_bak]# cat ip_asa.txt 10.10.10.254    123  
10.10.20.254    123
  cat up_cfg.sh是将备份的配置文件上传FTP备份。(也可以通过其他途径备份到存储服务器。)
[root@localhost cisco_bak]# cat up_cfg.sh  
#!/bin/bash
  
#This script is upload cfg to Remote Computer.
  
TODAY=`/bin/date +%F`
  
#Local Path
  
L_PATH=/usr/local/scripts/cisco_bak
  
#date path
  
Date_PATH=`/bin/date +%Y%m%d%H%M%S`
  
cd ${L_PATH}
  
#$1 Ip,$2 User,$3 Passwd,$4 Remote_Path
  
/usr/kerberos/bin/ftp -i -n -v << !
  
open $1
  
user $2  $3
  
bin
  
passive
  
cd $4
  
lcd  ${L_PATH}/cfg
  
mput *${TODAY}.cfg
  
bye
  
!
  cisco_bak.sh是主程序,它将telnet_asa.exp 、telnet_switch.exp和up_cfg.sh整合到一个脚本中。
[root@localhost cisco_bak]# cat cisco_bak.sh  
#!/bin/bash
  
#
  
TODAY=`date +%F`
  
PATH=/usr/local/scripts/cisco_bak
  
[ -d ${PATH}/cfg/ ] || /bin/mkdir -p ${PATH}/cfg/
  
cd ${PATH}
  
##ip.txt is stored in the user name and password.
  
#switch_bak
  
while read ip
  
do
  
#IP_NAME is IP
  
IP_NAME=`echo "$ip" | /bin/awk '{print $1}'`
  
/usr/bin/expect telnet_switch.exp $ip > ${PATH}/cfg/switch_${IP_NAME}_${TODAY}.cfg
  
done < ip_switch.txt
  
#asa_bak
  
while read ip
  
do
  
#IP_NAME is IP
  
#IP_NAME=`echo "$ip" | /bin/awk '{print $1}'`
  
/usr/bin/expect telnet_asa.exp $ip > ${PATH}/cfg/asa_${IP_NAME}_${TODAY}.cfg
  
done < ip_asa.txt
  
##upload cfg to ftp
  
##/bin/bash ${PATH}/up_cfg.sh FTP_IP FTP_USER FTP_PASSWD FTP_PATH
  
/bin/bash ${PATH}/up_cfg.sh 10.10.10.200 abc 123 /home/abc/Cisco_Devices
  3.在linux上定期执行
[root@localhost cisco_bak]# crontab -l  
00 23 * * 6 /bin/bash /usr/local/scripts/cisco_bak/cisco_bak.sh  >> /dev/null 2>&1
  三、总结:
  1.telnet_switch.exp和telnet_asa.exp很像,但在while循环中有区别,"*More--" {send " "}和"*More --->" {send " "}是不一样的。
  2.有的防火墙需要用户名和密码才能登陆,可稍作修改telnet_asa.exp,传入三个参数:ip、name和passwd
  3.可扩展:在备份失败时放送邮件通知管理员。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-538806-1-1.html 上篇帖子: cisco路由器光纤接入设置 下篇帖子: Cisco easy *** 基本配置手册
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表