Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1733925
  • 博文数量: 234
  • 博客积分: 4966
  • 博客等级: 上校
  • 技术积分: 3322
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-13 01:03
文章分类

全部博文(234)

文章存档

2017年(2)

2016年(1)

2015年(8)

2014年(11)

2013年(44)

2012年(27)

2011年(22)

2010年(30)

2009年(37)

2008年(6)

2007年(45)

2006年(1)

分类: 系统运维

2013-08-22 21:33:00


原来用expect写了一个备份交换机配置的脚本,但经常是出错或者是备份不成功
现在用python重写过,测试了下,三十多台交换机,总共备份时间也就一秒多,也比原来的脚本稳定多了

再另外说明下:
sw.txt文件中就是需要备份的交换机的IP,每行一个IP就行了
另外需要自己建立一个tftp服务器,交换机配置是备份到tftp服务器上,然后再对配置文件打包等动作

点击(此处)折叠或打开

  1. #!/usr/bin/env python
  2. #coding:utf-8

  3. import sys
  4. import os
  5. import telnetlib
  6. import time
  7. import threading
  8. import datetime

  9. #Use for loop to telnet into each routers and execute commands
  10. class Bakconf(threading.Thread):
  11.     def __init__(self,host,upwd,epwd):
  12.         threading.Thread.__init__(self)
  13.         self.host=host
  14.         self.upwd=upwd
  15.         self.epwd=epwd

  16.     def run(self):
  17.         try:
  18.             tn = telnetlib.Telnet(self.host,port=23,timeout=5)
  19.         except:
  20.             print "Can't connection %s"%self.host
  21.             return
  22.         tn.set_debuglevel(5)
  23.         tn.write(self.upwd +b"\n")
  24.         tn.write("en\n")
  25.         tn.write(self.epwd + b"\n")
  26.         tn.write("copy startup-config tftp:\n")
  27.         tn.write(tftpser + b"\n")
  28.         tn.write(b"\n")
  29.         time.sleep(1)
  30.         tn.write("exit\n")
  31.         tn.close()

  32. def main():
  33.     #user_exec_mode_password
  34.     upwd1 = "**********"
  35.     upwd2 = "**********"
  36.     #privilege_exec_mode_password
  37.     epwd1 = "**********"
  38.     epwd2 = "**********"
  39.     global tftpser
  40.     tftpser="192.168.103.71"

  41.     for host in open(r'/backup/shell/sw.txt').readlines():
  42.         dsthost = host.strip('\n')
  43.         bakconf=Bakconf(dsthost, upwd1, epwd1)
  44.         bakconf.start()

  45.     hostlist2=["10.1.11.237","10.1.11.238","192.168.103.239"]
  46.     for host in hostlist2:
  47.         bakconf=Bakconf(host, upwd2, epwd2)
  48.         bakconf.start()

  49.     #Backup switch config and tar
  50.     time.sleep(1)
  51.     dtime=datetime.datetime.now().strftime("%Y%m%d%H%M%S")
  52.     os.popen('tar -cjf /backup/cisco/switch-'+dtime+'.tar.bz2 '+ '/tftproot')
  53.     os.popen('rm -fr /tftproot/*')
  54.     os.popen('find /backup/cisco/ -mtime +90 -exec rm {} \;')

  55. if __name__=="__main__":
  56.     main()

阅读(10039) | 评论(8) | 转发(2) |
给主人留下些什么吧!~~

cnvgrcii2013-08-28 09:56:14

路过看看

edgeman032013-08-26 14:56:13

niao5929:呵呵,能把源代码给大家是最好的了。方便大家学习恩。支持和谢谢你

交换机管理如果从安全方面其实建议是用ssh管理,另外管理用户认证建议搞集中认证,这样好管理用户,另外日志方面也作集中日志存储

回复 | 举报

niao59292013-08-25 23:10:27

edgeman03:忘记加了,文件里面就是每行写一个交换机的IP就行了,如果你已经有其它的管理文件,也可以导入进来
hostlist2这个是核心交换机的IP列表,有另外的密码管理,所以单独列出来了
python是一个不错的工具,可以学习下,脚本比较简单,主要知识点在于多线程

呵呵,能把源代码给大家是最好的了。方便大家学习恩。支持和谢谢你

回复 | 举报

edgeman032013-08-25 22:28:19

niao5929:/backup/shell/sw.txt文件里该写什么哦
  hostlist2=["10.1.11.237","10.1.11.238","192.168.103.239"]这段话又是什么意思哦

忘记加了,文件里面就是每行写一个交换机的IP就行了,如果你已经有其它的管理文件,也可以导入进来
hostlist2这个是核心交换机的IP列表,有另外的密码管理,所以单独列出来了
python是一个不错的工具,可以学习下,脚本比较简单,主要知识点在于多线程

回复 | 举报

niao59292013-08-23 16:21:03

/backup/shell/sw.txt文件里该写什么哦
  hostlist2=["10.1.11.237","10.1.11.238","192.168.103.239"]这段话又是什么意思哦