由於公司資安規定需要定期備份防火牆的組態設定檔,如果每個月都要進到Web介面去操作一次,點來點去也是滿花時間的;另外一個作法是登入命令列界面,然後手動去下 save config from flash to tftp x.x.x.x filename 這個指令,雖然是比較快速了些,但總是感覺多一件事情在身上,到時要是別的事忙起來,還是怕會忘記。
由於懶惰是人的天性,所以總是會想如何把事情自動化,於是我就想用ant的
telnet task來自動登入Firewall並執行save config指令,方法大致如下:
1.在備份用的主機上架設
TFTP Server
2.下載及安裝JRE、
Ant 1.7.1及telnet task所需之
commons-net套件。
3.編輯一個build.xml及一個build.properties檔案
4.執行 ant 看是否可正常備份
5.寫一個批次檔將該ant指令包裝起來
6.設定自動執行該批次檔
底下再簡單說明一下上述步驟
1.安裝TFTP Server可以參考這篇
http://www.andowson.com/posts/list/184.page,去下載tftpd32 service edition (installer),安裝完成後,手動建立一個C:\tftp的目錄,並把tftp的根目錄(Base Directory)設定到C:\tftp(設定完成建議重開機測試看看,以免日後作WindowsUpdate重開機之後目錄的設定跑掉,造成備份失敗)
2.將把下載來的ant zip檔解壓縮到C:\底下,設定環境變數ANT_HOME指向安裝的目錄,並在Path變數加上%ANT_HOME%\bin。然後把commons-net的jar檔放到ANT_HOME的lib目錄下。
3.可以參考底下兩個範例,將這兩個檔案存到C:\下
build.xml範例如下:
<?xml version="1.0" encoding="Big5" ?>
<project name="backup" default="ns500" basedir=".">
<description>Network Switch Config Backup</description>
<!-- Enable access to build.properties variables -->
<property file="build.properties" />
<property name="backup.root.dir" value="C:\Documents and Settings\andowson\My Documents\config" />
<property name="ns500.backup.dir" value="${backup.root.dir}\Firewall\${ns500.ip}" />
<property name="tftp.root" value="C:\tftp" />
<!-- Init -->
<target name="init" description="Create backup directory">
<tstamp>
<format property="TODAY" pattern="yyyyMMdd" />
</tstamp>
<mkdir dir="${backup.root.dir}" />
<mkdir dir="${backup.root.dir}\Firewall" />
<mkdir dir="${backup.root.dir}\Firewall\${ns500.ip}" />
</target>
<!-- Backup NS500 Config -->
<target name="ns500" depends="init" description="Backup ns500 config">
<property name="ns500.cfg" value="ns500_${TODAY}.cfg" />
<telnet server="${ns500.ip}">
<read timeout="5">login: </read>
<write>${firewall.username}</write>
<read timeout="5">password: </read>
<write>${firewall.password}</write>
<read timeout="5">-> </read>
<write>save config from flash to tftp ${tftp.host} ${ns500.cfg}</write>
<read timeout="30">TFTP Succeeded</read>
<write>exit</write>
</telnet>
<move file="${tftp.root}\${ns500.cfg}" todir="${ns500.backup.dir}" />
</target>
</project>
build.properties範例如下:請視您真正的情況修改對應的參數值,下列例子中我們的TFTP主機IP是172.16.34.14,防火牆NS500的IP是192.168.1.254。
tftp.host=172.16.34.14
ns500.ip=192.168.1.254
firewall.username=netscreen
firewall.password=netscreen
4.開啟一個DOS命令列視窗,然後切換到build.xml及build.properties所存放的目錄下,接著執行
ant ns500
5.將上述動作編輯成一個backup_config.bat
@echo off
cd C:\
ant ns500
6.執行附屬應用程式>系統工具>排定的工作,然後選到C:\backup_config.bat這個檔案,並設定執行的條件及頻率。
要注意的地方:
NetScreen上要先啟動Telnet存取,並將備份主機的IP加入到防火牆允許的管理IP。
目前實際測試後發現Ant 1.8.0無法正常執行,請使用Ant 1.7.1。