作為一名網絡運維工程師,如果管理的路由、交換設備比較多的話,那麼你是否也會跟我一樣遇到這樣的問題:設備配置經常調整,尤其是接入層交換機,萬一哪天忘了保存配置,而第二天就發生了交換機掉電重啟,你卻又忘記了以前的配置,導致了網絡恢復配置時間很長。
當你遇到這樣的問題或者煩惱時,你是否也會去想:如果有一種方法,可以讓交換機每天自動保存一下配置該多好。你進一步去考慮,如果交換機能每天不但能自己保存配置,還能把配置上傳到服務器上一份,那該多好啊。
你認真看以下內容,或許對你有些啟發。
在智能化高度發達的今天,很多交換機已經能夠執行每天自動保存配置的功能了。下面以華為來舉例。[switch]set save-configuration backup-to-server server 192.168.1.1 transport-type ftp user admin password admin123 path /configbck
//set save-configuration 備份到服務器 服務器IP是192.168.1.1,備份方式是FTP,用戶名是admin密碼是admin123備份路徑為/configbck//
[switch]set save-configuration delay 5 //5分鐘後執行自動保存配置//
[switch]set save-configuration internal 43200 //每隔12小時循環一次//
[switch]dis saved-configuration time //能夠看到之前保存配置的方式//
下圖是我在FTP服務器上看到的自動保存的配置文件
但是,交換機自動執行,並不是所有版本都支持的,也不是所有品牌都支持的,如果低版本不支持,是可以通過升級交換機的系統版本來實現的,但升級交換機系統,是需要斷網的,也是有風險的。
下面,我貼一個我寫好的用Linux來實現此備份的小腳本。此小腳本的功能是代替手工到交換機上保存配置,是完全登陸交換機來作的操作,不論交換機的版本高低,只要權限內能敲的命令,基本都可以實現。
腳本的執行過程是這樣的:telnet到指定交換機--保存配置--通過交換機登陸到服務器--輸入用戶名密碼--將交換機的配置文件上傳到FTP服務器上。
下面是腳本內容(vi tel104.exp):
#!/usr/bin/expect //此處用的是expect,如果linux沒有的話,需要yum安裝一下//
set date [exec date "+%Y%m%d"] //給date變量賦值,後面需要調用//
spawn telnet 192.168.1.104 //這是expect的一個命令,表示從服務器上telnet到192.168.1.104//
expect “Username:" //在回顯的字符串中匹配Username:,如果匹配到,執行下面//
send "admin\r" //向交換機發送admin字符串,即輸入telnet到交換機的用戶名//
expect "Password:" //在回顯的字符串中匹配Password:,如果匹配到,執行下面//
send "Admin@huawei\r" //向交換機發送Admin@huawei字符串。即輸入tel到交換機的密碼//
send "save\r" //向交換機發送save字符串,相當於在交換機上執行save命令//
send "Y\r" //因交換機在save時,會有個交互過程,發送字符串Y,相當於在交換機輸入Y//
send "ftp 192.168.1.1\r" //向交換機發送ftp 192.168.1.1指令,相當於在交換機上輸入ftp 192.168.1.1這條命令,意思就是登陸FTP服務器//
send "admin\r" //發送字符串admin,即輸入登陸FTP服務器的用戶名//
send "Admin@huawei\r" //發送字符串Admin@huawei。即輸入登陸FTP服務器的密碼//
send "put flash:/vrpcfg.zip /configbck/$date.zip\r" //執行指令Put,交配置文件上傳到FTP服務器//
interact
~
說明:1、Linux服務器上要先按裝expect,否則是不能執行expect命令的。
2、Linux服務器要安裝telnet,否則是不能telnet的。安裝都用yum安裝就可以了。
3、向交換機發送什麼指令,不同的交換機是不一樣的,根據需要選擇要send的字符串,也就是根據需要來指定你要在交換機的輸入的命令。當然不只有備份,像reload /switchport mode trunk都是可以做的。
4、至於如何搭建FTP服務器,如何更深入地使用expect,請自行百度或者google。
下面我們要做的是,創建一個crontab自動執行任務
[root@permanet ~]# crontab -e
00 01 * * * /home/expect/tel104.exp //1點0分,每日每月每周,執行絕對路徑下的命令//
15 01 * * * /home/expect/tel105.exp //1點15分,每日每月每周,執行絕對路徑下的命令//
30 01 * * * /home/expect/tel105.exp //1點30分,每日每月每周,執行絕對路徑下的命令//
45 01 * * * /home/expect/tel106.exp //1點45分,每日每月每周,執行絕對路徑下的命令//
55 01 * * * /home/expect/tel107.exp //1點55分,每日每月每周,執行絕對路徑下的命令//
凌晨1點開始,每隔15分鐘自動到一台指定設備保存配置文件到服務器。