透過Linux Bash 每日自動備份 Fortigate Config

315 詞

在 Fortigate上面建立一個名為backup的使用者,密碼為YourPassword,權限設定如下:
Imgur

在 Linux 建立 sh 並賦予執行權限和建立排程,檔案內容如下:

1
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
#!/bin/bash
name="Fortigate-300D" #設備名稱
dir="/backup" #備份目的地
user="YOURUSERNAME" #帳號
password="YOURPASSWORD" #密碼
tftp_ip="TFTP_SERVER_IP" #TFTP伺服器IP
fg_devices="FORTIGATE_IP" #FORTIGATE防火牆IP
date="$(date +"%Y%m%d")" #獲取當前日期
yesterday="$(date -d '1 days ago' "+%Y%m%d")" #找出前一天的日期
for fg_device in $fg_devices ; do
expect -c "
set timeout 3
spawn ssh $user@$fg_device
expect \"(yes/no)\" { send \"yes\r\"; exp_continue }
expect \"*password:*\"
set send_slow {1 0.05}
send -s \"$password\r\"
send_user \"$password\r\"
expect \"FG\"
send -s \"config global\n\"
expect \"FG\"
send -s \"execute backup full-config ftp $name-$date.cfg $tftp_ip $user $password\n\"
expect \"FG*\"
send -s \"exit\n\"
interact"
done

※注意 這個範例是有切VDOM的操作方式

當你寫完後記得調整一下操作權限

1
chmod 755 xxx.sh

之後就可以把指令寫進排程中

1
2
3
vim /etc/crontab
-----------------------------------
0 0 * * * root /home/backup/xxx.sh

因為我自己的設備很多,所以我有在寫一個總控制來呼叫shell運作

不過說實在話,這樣的執行很沒效率,速度又慢。

それから,我又寫了一個Python版的,運作起來就是又快又準,日後想到再來分享給大家。(。◕∀◕。)