天天看點

Hillstone 防火牆備份腳本

Hillstone 防火牆備份腳本

    對于公司有多台防火牆備份的需求,為減輕工作量對多台實體防火牆進行自動備份(不限于防火牆,支援路由交換與安全等其他産品),本篇文章使用Linux系統shell腳本編寫Hillstone自動化備份防火牆,定時歸檔,可配合自動上傳腳本,将備份檔案上傳至阿裡OSS,實作永久高可用備份,如果異常發送郵件/微信/短信等通知使用者檢查。

腳本檔案使用說明:

一、安裝expect

1

<code>yum </code><code>install</code> <code>expect lrzsz -y</code>

二、安裝vsftp

2.1建立目錄并上傳檔案

<code>mkdir</code> <code>scripts</code>

上傳腳本到/scripts目錄内,并賦予可執行權限

<a href="https://s5.51cto.com/wyfs02/M00/9D/8F/wKiom1mB2YKhiIcjAAA5EsRLFqg464.png" target="_blank"></a>

2.2 運作腳本bash Vsftpd.sh并檢視ftp資訊

檢視ftp相關資訊,檔案在:/root/ftppasswd.txt

三、運作備份腳本填寫相關資訊

<a href="https://s5.51cto.com/wyfs02/M02/9D/8F/wKiom1mB2hqRBl2LAAC6FVeoFu4720.png" target="_blank"></a>

FTP伺服器IP位址

FTP使用者名

FTP密碼

接受郵件人郵箱

四、執行腳本檢視郵箱

<a href="https://s3.51cto.com/wyfs02/M00/9D/8F/wKiom1mB29bROyCaAAEKZlJsjGs106.png" target="_blank"></a>

五、定時任務

如下如下定期執行腳本,修改backup.sh

<a href="https://s1.51cto.com/wyfs02/M02/9D/90/wKiom1mB3Dqg2etSAACaraSnM8U320.png" target="_blank"></a>

将這些變量寫入back.sh

<a href="https://s3.51cto.com/wyfs02/M01/9D/8F/wKioL1mB3Gmi36ihAABDwMYv_kk078.png" target="_blank"></a>

制作定時任務即可

六、檢視結果

<a href="https://s5.51cto.com/wyfs02/M02/9D/90/wKioL1mB3SDQJ9ZrAAJe1dncZus921.png" target="_blank"></a>

七、腳本配置檔案

每次隻需更新此配置檔案即可。

八、腳本檔案

back.sh

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<code>#!/usr/bin/expect -f</code>

<code>set</code> <code>ip [ lindex $argv 0 ]</code>

<code>set</code> <code>user [ lindex $argv 1 ]</code>

<code>set</code> <code>password [ lindex $argv 2 ]</code>

<code>set</code> <code>port [ lindex $argv 3 ]</code>

<code>set</code> <code>host [ lindex $argv 4 ]</code>

<code>set</code> <code>ftpip [ lindex $argv 5 ]</code>

<code>set</code> <code>ftpuser [ lindex $argv 6 ]</code>

<code>set</code> <code>ftppwd [ lindex $argv 7 ]</code>

<code>spawn </code><code>ssh</code> <code>-p $port $user@$ip</code>

<code>expect {</code>

<code>    </code><code>"(yes/no)?"</code>

<code>        </code><code>{</code>

<code>            </code><code>send </code><code>"yes\r"</code>

<code>            </code><code>expect </code><code>"password:"</code>

<code>            </code><code>send </code><code>"$password\r"</code>

<code>        </code><code>}</code>

<code>        </code><code>"password:"</code>

<code>    </code><code>{</code>

<code>    </code><code>send </code><code>"$password\r"</code>

<code>    </code><code>}</code>

<code>}</code>

<code>expect </code><code>"*#"</code>

<code>send </code><code>"export configuration startup to ftp server $ftpip user $ftpuser password $ftppwd $host\r"</code>

<code>expect </code><code>"Export ok"</code>

<code>send </code><code>"exit\r"</code>

<code>expect eof</code>

backup.sh

<code>#!/bin/bash</code>

<code>#mail:[email protected]</code>

<code>read</code> <code>-p </code><code>"Please input ftp server ipaddress:"</code> <code>FTPIP</code>

<code>read</code> <code>-p </code><code>"Please input ftp username:"</code> <code>FTPUSER</code>

<code>read</code> <code>-p </code><code>"Please input ftp password:"</code> <code>FTPPWD</code>

<code>read</code> <code>-p </code><code>"Please input Receive mailbox:"</code> <code>MAIL</code>

<code>config_file=</code><code>/scripts/back_conf</code>

<code>backup_dir=</code><code>/FTP</code>

<code>DATE=$(</code><code>date</code> <code>+%Y%m%d)</code>

<code>if</code> <code>[ ! -d $backup_dir ];</code><code>then</code>

<code>    </code><code>/bin/mkdir</code> <code>$backup_dir</code>

<code>fi</code>

<code>cat</code> <code>$config_file | </code><code>while</code> <code>read</code> <code>ADDRESS NAME IP USER PASSWD PORT FILENAME;</code><code>do</code>

<code>if</code> <code>[ ! -d $backup_dir/$ADDRESS/$NAME ];</code><code>then</code>

<code>    </code><code>/bin/mkdir</code> <code>-p $backup_dir/$ADDRESS/$NAME</code>

<code>.</code><code>/back</code><code>.sh $IP $USER $PASSWD $PORT $FILENAME $FTPIP $FTPUSER $FTPPWD &amp;&gt;</code><code>/dev/null</code>

<code>if</code> <code>[ $? -</code><code>eq</code> <code>0 ];</code><code>then</code>

<code>    </code><code>/bin/mv</code> <code>$backup_dir/$FILENAME $backup_dir/$ADDRESS/$NAME/$FILENAME</code><code>"_"</code><code>$DATE </code>

<code>    </code><code>/bin/echo</code> <code>"BACKUP $IP SUCCESS,BACKUP_FILE $backup_dir/$ADDRESS/$NAME/$FILENAME"</code><code>_</code><code>"$DATE"</code> <code>| </code><code>/bin/mail</code> <code>-r </code><code>"[email protected]"</code> <code>-s </code><code>"$NAME 防火牆備份_成功!"</code> <code>$MAIL</code>

<code>else</code>

<code>    </code><code>/bin/echo</code> <code>"BACKUP $IP SUCCESS,BACKUP_FILE $backup_dir/$ADDRESS/$NAME/$FILENAME"</code><code>_</code><code>"$DATE"</code> <code>| </code><code>/bin/mail</code> <code>-r </code><code>"[email protected]"</code> <code>-s </code><code>"$NAME 防火牆備份_失敗!"</code> <code>$MAIL</code>

<code>done</code>

back_conf

<code>XA    西安    172.17.1.10    hillstone    hillstone    22    username</code>

本片為自動備份hillstone防火牆腳本,可以配合上傳至OSS,與監控告警腳本來實作一整套流程,其他腳本見我其他部落格。

本文轉自 KaliArch 51CTO部落格,原文連結:http://blog.51cto.com/kaliarch/1953118,如需轉載請自行聯系原作者