會員註冊 / 登入  |  電腦版  |  Jump to bottom of page

網路設備管理 Network Device Management » 自動備份 Cisco 3750G-24TS-S1U 網路設定檔

發表人: andowson, 七段學員
2011-11-18 19:19:21
由於公司資安規定需要定期備份網路設備的網路設定檔,如果每個月都要進到console介面去操作一次,輸入一堆指令也是滿花時間的;
另外一個作法是登入命令列界面,然後手動去下copy startup-config tftp://${tftp.host} 這個指令,雖然是比較快速了些,但總是感覺多一件事情在身上,到時要是別的事忙起來,還是怕會忘記。

由於懶惰是人的天性,所以總是會想如何把事情自動化,於是我就想用ant的telnet task來自動登入Cisco Switch並執行copy startup-config指令,方法大致如下:
1.在備份用的主機上架設TFTP Server
2.下載及安裝JRE、Ant 1.7.1及telnet task所需之commons-net套件。
3.編輯一個build.xml及一個build.properties檔案
4.執行 ant cisco看是否可正常備份
5.寫一個shell script檔將該ant指令包裝起來
6.設定/etc/crontab自動執行該shell script檔

由於手邊只有Linux主機可以當備份主機使用,底下再簡單說明一下上述步驟
1.安裝TFTP Server可以參考這篇
http://www.andowson.com/posts/list/544.page,安裝完成後,手動建立一個/tftpboot的目錄,並把tftpboot的根目錄(Base Directory)設定777

2.將把下載來的ant zip檔解壓縮到/root/cisco底下,設定環境變數ANT_HOME指向安裝的目錄,並在PATH變數加上$ANT_HOME/bin。然後把commons-net的jar檔放到ANT_HOME的lib目錄下。

3.可以參考底下兩個範例,將這兩個檔案存到/root/cisco目錄下
build.xml範例如下:

<?xml version="1.0" encoding="Big5" ?>

<project name="backup" default="cisco" basedir=".">
<description>Network Switch Config Backup</description>

<!-- Enable access to build.properties variables -->
<property file="build.properties" />
<property name="backup.root.dir" value="/root/cisco" />
<property name="cisco.backup.dir" value="${backup.root.dir}/${cisco.ip}" />
<property name="tftp.root" value="/tftpboot" />

<!-- Init -->
<target name="init" description="Create backup directory">
<tstamp>
<format property="TODAY" pattern="yyyyMMdd" />
</tstamp>
<property name="cisco.cfg" value="cisco_${TODAY}.cfg" />
<mkdir dir="${backup.root.dir}" />
<mkdir dir="${backup.root.dir}/${cisco.ip}" />
<touch file="${tftp.root}/${cisco.cfg}"/>
<chmod file="${tftp.root}/${cisco.cfg}" perm="ugo+rwx"/>
</target>

<!-- Backup cisco Config -->
<target name="cisco" depends="init" description="Backup cisco config">
<property name="cisco.cfg" value="cisco_${TODAY}.cfg" />
<telnet server="${cisco.ip}">
<read timeout="5">Username: </read>
<write>${cisco.username}</write>
<read timeout="5">Password: </read>
<write>${cisco.password}</write>
<read timeout="5">></read>
<write>enable</write>
<read timeout="5">Password: </read>
<write>${enable.password}</write>
<read timeout="5">#</read>
<write>copy startup-config tftp://${tftp.host}/${cisco.cfg}</write>
<read timeout="30">Address or name of remote host [${tftp.host}]?</read>
<write>${tftp.host}</write>
<read timeout="30">Destination filename [${cisco.cfg}]?</read>
<write>${cisco.cfg}</write>
<read timeout="30">bytes/sec)</read>
<write>exit</write>
</telnet>
<move file="${tftp.root}/${cisco.cfg}" todir="${cisco.backup.dir}" />
</target>

</project>


build.properties範例如下:請視您真正的情況修改對應的參數值,下列例子中我們的TFTP主機IP是172.16.38.1,Cisco Switch的IP是172.16.38.254。

tftp.host=172.16.38.1
cisco.ip=172.16.38.254
cisco.username=admin
cisco.password=admin
enable.password=cisco


4.開啟一個shell命令列視窗,然後切換到build.xml及build.properties所存放的目錄/root/cisco下,接著執行
ant cisco

5.將上述動作編輯成一個backup_config.sh
backup_config.sh:

#!/bin/bash
ANT_HOME=/root/cisco/apache-ant-1.7.1
JAVA_HOME=/usr/java/latest
PATH=$PATH:$ANT_HOME/bin:$JAVA_HOME/bin
ant cisco


6.編輯 /etc/crontab,並設定backup_config.sh執行的頻率。
# 每個月備份網路設備的網路設定 (2011.11.18 by Andowson)
30 5 23 * * root /root/cisco/backup_config.sh > /var/log/backup_config.log 2>&1




會員註冊 / 登入  |  電腦版  |  Jump to top of page