練功房推薦書單

  • 猛虎出柙雙劍合璧版:最新 OCA / OCP Java SE 7 Programmer 專業認證
  • 流浪教師存零股存到3000萬
  • SCJP 6.0認證教戰手冊(第二版)Oracle Certified Professional Java Programmer(附光碟)
  • 小資女艾蜜莉:我的資產翻倍存股筆記
自動備份 Cisco 3750G-24TS-S1U 網路設定檔  RSS feed
討論區首頁 » Cisco 網路交換設備 Cisco Switch
發表人 內容
andowson

七段學員
[Avatar]

註冊時間: 2007-01-02 22:20:40
文章: 702
來自: 台北
離線
由於公司資安規定需要定期備份網路設備的網路設定檔,如果每個月都要進到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

分享經驗 累積智慧
[WWW] [MSN]
 
討論區首頁 » Cisco 網路交換設備 Cisco Switch
前往: