Chinaunix首页 | 论坛 | 博客
  • 博客访问: 244437
  • 博文数量: 32
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 414
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-22 11:22
个人简介

.....

文章分类

全部博文(32)

文章存档

2016年(1)

2015年(12)

2014年(19)

我的朋友

分类: LINUX

2014-06-13 05:14:17

感谢http://blog.chinaunix.net/uid-20569113-id-2793105.html

感谢shell板块里面的大神们帮助,有什么问题,和好的建议帮忙提出,谢谢。

需求介绍
 400多台交换机,多种型号,备份配置文档。

目录结构

switch/
├─check/
│     cfgfile.sh 读取成功上传配置的IP地址
│     source.sh  读取switch.conf的IP地址
├─errlog/
│  没有上传配置的交换机生成日志
├─log/
│  整个备份的过程生成日志

│ info.sh       查看备份状况程序
│ run.sh        主备份程序
│ switch.conf   存放IP地址,用户名,密码,配置文件名称

run.sh

点击(此处)折叠或打开

  1. #!/bin/bash
  2.   
  3.  ################################################################################
  4.  ##########
  5.   
  6.  #TFTP Server Size
  7.  TFTP_IP=10.110.0.222
  8.   
  9.  #Switch Config File (user,password,ip)
  10.  Switch_conf=switch.conf
  11.   
  12.  #Now date
  13.  Daliy="$(date +%Y-%m-%d)"
  14.   
  15.  ################################################################################
  16.  #########
  17.   
  18.  while read SW_INFO; do
  19.   
  20.    FACTORY=`echo $SW_INFO | awk -F"," '{print $1}'`
  21.   
  22.    SW_IP=`echo $SW_INFO | awk -F"," '{print $2}'`
  23.   
  24.    TELNET_NAME=`echo $SW_INFO | awk -F"," '{print $3}'`
  25.   
  26.    TELNET_PASSWD=`echo $SW_INFO | awk -F"," '{print $4}'`
  27.   
  28.    SWITCH_CONF=`echo $SW_INFO | awk -F"," '{print $5}'`
  29.   
  30.    (
  31.      #锐捷交换机
  32.      if [ "$FACTORY" = "rj" ];then
  33.  expect<<EOF
  34.        spawn telnet $SW_IP
  35.   
  36.        expect "Username:"
  37.        send "$TELNET_NAME\r"
  38.   
  39.        expect "Password:"
  40.        send "$TELNET_PASSWD\r"
  41.   
  42.        send "copy running-config startup-config\r"
  43.        send "copy startup-config tftp:\r"
  44.        send "$TFTP_IP\r"
  45.        send "$SW_IP.txt\r"
  46.        send "! ##############################################################\r"
  47.        send "exit\r"
  48.        expect eof
  49.  EOF
  50.      fi
  51.   
  52.      #6506
  53.      if [ "$FACTORY" = "6506" ];then
  54.  expect<<EOF
  55.        spawn telnet $SW_IP
  56.   
  57.        expect "Password:"
  58.        send "$TELNET_NAME\r"
  59.   
  60.        expect "*>"
  61.        send "enable\r"
  62.   
  63.        expect "Password:"
  64.        send "$TELNET_PASSWD\r"
  65.   
  66.        send "copy running-config startup-config\r"
  67.        send "copy startup-config tftp:\r"
  68.        send "$TFTP_IP\r"
  69.        send "$SW_IP.txt\r"
  70.        send "! ##############################################################\r"
  71.        send "exit\r"
  72.        expect eof
  73.  EOF
  74.     fi
  75.   
  76.      #华为交换机
  77.      if [ "$FACTORY" = "hw" ];then
  78.  expect<<EOF
  79.        spawn telnet $SW_IP
  80.        expect "Password:"
  81.        send "$TELNET_PASSWD\r"
  82.        send "tftp ${TFTP_IP} put ${SWITCH_CONF} ${SW_IP}.zip\n\r"
  83.        exec sleep 1
  84.        send "# ############################################################\n\r"
  85.        send "quit\n\r"
  86.        expect eof
  87.  EOF
  88.      fi
  89.   
  90.      #h3c交换机
  91.      if [ "$FACTORY" = "h3c" ];then
  92.  expect<<EOF
  93.        spawn telnet $SW_IP
  94.        expect "Password:"
  95.        send "$TELNET_PASSWD\r"
  96.        send "tftp ${TFTP_IP} put ${SWITCH_CONF} ${SW_IP}.cfg\r";
  97.        send "! ##############################################################\r"
  98.        send "quit\r"
  99.        expect eof
  100.  EOF
  101.      fi
  102.   
  103.      #华为2126型号交换机
  104.      if [ "$FACTORY" = "hw2126" ];then
  105.  expect<<EOF
  106.        spawn telnet $SW_IP
  107.        expect "Password:"
  108.        send "$TELNET_PASSWD\r"
  109.        send "sys\r"
  110.        send "tftp put ${SWITCH_CONF} //${TFTP_IP}/${SW_IP}.cfg\r";
  111.        send "! ##############################################################\r"
  112.        send "quit\r"
  113.        send "quit\r"
  114.        expect eof
  115.  EOF
  116.      fi
  117.   
  118.      #凯创交换机
  119.      if [ "$FACTORY" = "kc" ];then
  120.        echo "ERROR!!!!"
  121.  #expect<<EOF
  122.  # spawn telnet $SW_IP
  123.  # expect "Username:"
  124.  # send "$TELNET_NAME\r"
  125.  # expect "Password:"
  126.  # send "$TELNET_PASSWD\r"
  127.   
  128.  #EOF
  129.      fi
  130.    )|tee -a ./log/switch_backup_$Daliy.log
  131.  done < $Switch_conf
  132.  exit 0
info.sh

点击(此处)折叠或打开

  1. #!/bin/bash
  2.  #工作目录
  3.  cd /opt/switch/check/
  4.   
  5.  #当前时间
  6.  Daliy="$(date +%Y-%m-%d)"
  7.   
  8.  ./source.sh > 1.txt
  9.  ./cfgfile.sh > 2.txt
  10.   
  11.  sort -n 1.txt > 3.txt
  12.  sort -n 2.txt > 4.txt
  13.   
  14.   
  15.  #成功备份数
  16.  cd /opt/Switch_config_file
  17.  echo "##########################################################"
  18.  echo "总共交换机数"
  19.  awk 'END{print NR}' /opt/switch/switch.conf
  20.   
  21.  echo "成功备份交换机数"
  22.  #ll |grep "^-" | wc -l 其实应该用这个命令查看文件下的文件数
  23.  find ./ -type f | wc -l
  24.  echo "##########################################################"
  25.   
  26.  #文件对比
  27.  cd /opt/switch/check
  28.  echo "备份失败的交换机!"
  29.  comm -3 3.txt 4.txt > /opt/switch/errlog/err_$Daliy.log
  30.  comm -3 3.txt 4.txt
  31.  echo "##########################################################"
  32.   
  33.  #删除.txt文件
  34.  rm -rf *.txt

cfgfile.sh
 

点击(此处)折叠或打开

  1. #!/bin/bash
  2.  #读取TFTP文件夹内的文件
  3.  Folder_A="/opt/Switch_config_file"
  4.  for file_a in ${Folder_A}/*; do
  5.      temp_file=`basename ${file_a%.*}`
  6.      echo $temp_file
  7.  done
 source.sh

点击(此处)折叠或打开

  1. #/bin/bash
  2. #工作目录
  3. #cd /opt/switch/
  4. file="/opt/switch/switch.conf"
  5. #执行目录
  6. while read SW_INFO; do
  7. SW_IP=`echo $SW_INFO | awk -F"," '{print $2}'`
  8. (
  9.   echo $SW_IP
  10. )
  11. done < $file


阅读(2993) | 评论(4) | 转发(0) |
1

上一篇:没有了

下一篇:部分交换机的SNMP配置

给主人留下些什么吧!~~

dizhuang2014-06-13 20:24:54

真的不错啊。

kingsh20122014-06-13 17:34:41

typuc:用的puppet ?

不是啊,就是简单的shell,先得登陆到交换机上去然后 执行交换机备份命令,备份命令是用expect的语法。

回复 | 举报

typuc2014-06-13 16:11:59

用的puppet ?

kingsh20122014-06-13 12:22:46

之前有点小问题,已经修改了。但是还是有很多BUG。