前言
當我們管理的網絡設備為個位數的時候,手動的把配置通過tftp方式copy出來還是可以的。但是當我們管理幾十台甚至上百台(有點誇張,都這個級別了肯定用專業的運維軟件或者開發運維平台進行管理)的時候手工備份配置就顯得捉襟見肘了,在設備就十幾二十台這種尷尬的數字的時候,cisco設備自帶的任務命令就顯得很好了,下面將介紹這個命令的用法
實現步驟
①設備時間的同步(定時備份那么設備的時間就必須要准確,一般內網都有NTP服務器,直接用ntp同步即可)
②tftp服務器(為啥是tftp不是ftp?因為cisco的定時任務命令不支持交互操作)
③寫一個bat命令(如果tftp在linux就寫一個shell腳本)move備份的配置(為啥?因為設備傳遞的是show run的結果然后redirect出來的,文件名是在設備上面寫死的,如果不每天定時轉移上傳的配置,那么下次設備再上傳配置的時候就會覆蓋上一次的配置)
④低版本的ios可能不支持
具體配置
①配置NTP
POE-2(config)#clock timezone CN 8 POE-2(config)#ntp server 172.28.28.1 POE-2(config)#ntp source vlan 255 POE-2#sh clock 10:25:38.348 CN Thu May 10 2018
②配置好tftp服務端
這里就用cisco的tftp了(反正都是自家的東西)

③配置定時任務
POE-2(config)#kron policy-list BAK //定義一kron策略列表 POE-2(config-kron-policy)#cli show run | redirect tftp://172.28.27.227/POE-2.cfg //從cli后面開始都是命令,但是這個命令必須是無交互的,比如不用輸yes等確認信息
POE-2(config-kron-policy)#exit //一定要exit退出才會提交 POE-2(config)#kron occurrence BAK at 10:40 recurring //添加調度,時間后面如果不加天數就表示每天這個時間都備份 recurring表示重復的意思 POE-2(config-kron-occurrence)#policy-list BAK //調度任務 POE-2(config-kron-occurrence)#exit POE-2#sh kron schedule //查看調度情況 Kron Occurrence Schedule BAK inactive, will run again in 0 days 00:08:11 at 10:40 on POE-2#sh run | in kron kron occurrence BAK at 10:40 recurring kron policy-list BAK
這里是測試 所以很快就可以看到自動備份的效果


④建立bat或者shell
需要將配置文件轉移到其他地方並且以時間命名才能達到我們增量備份的效果,不做此步驟每次的新備份都會覆蓋原有的備份(除非把名字改掉)
這里是windows系統就以bat為例:
@set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%" //建立一個變量,並通過%date:~5,2%來組合得出當前日期,組合的效果為yyyymmdd,date命令得到的日期格式默認為yyyy-mm-dd(如果不是此格式可以通過pause命令來暫停命令行窗口看通過%date:~,20%得到的當前計算機日期格式),所以通過%date:~5,2%即可得到日期中的第五個字符開始的兩個字符,例如今天為2009-02-05,通過%date:~5,2%則可以得到02。(日期的字符串的下標是從0開始的)
@md D:\網絡配置備份\%ymd% //第二句為用MD命令 建立以變量Ymd為名的文件夾
@move /y E:\tftpdir\*.* D:\網絡配置備份\%ymd%
//第三句為復制指定的文件到指定的文件夾。注意源文件的路徑不能太長否則就無法識別,最好也不要只中文路徑,不然出錯都不知道原因
下面可以復制到bat上面執行的(注意把路徑改下)
@set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%" @md D:\網絡配置備份\%ymd% @move /y E:\tftpdir\*.* D:\網絡配置備份\%ymd%
⑤建立windows任務計划
這里的建立需要注意要晚於cisco設備備份配置的時間,道理很簡單,配置沒生成就提前mv了是沒意義的
這里就不演示了
注:上述的操作同樣也只是半自動,因為在交換機上面要配置的內容也不少,如果要更高級的玩法可以看看 Kiwi CatTools工具(收費的)或者expect腳本(linux下的)
補充:用linux作為tftp服務器接受配置文件
①安裝tftp
[root@grafana-sz ~]#yum install xinetd tftp-server tftp -y
②配置tftp
[root@grafana-sz ~]# mkdir /tmp/network [root@grafana-sz ~]# vim /etc/xinetd.d/tftp 將 disable = yes 改為 disable = no 設置tftp根目錄: server_args = -s /tmp/network -c //參數-s指定chroot,-c指定了可以創建文件。 [root@grafana-sz ~]# systemctl start xinetd.service [root@grafana-sz ~]# systemctl start tftp.service [root@grafana-sz ~]# systemctl start tftp.socket [root@grafana-sz ~]# systemctl enable tftp.socket [root@grafana-sz ~]# systemctl enable tftp.service [root@grafana-sz ~]# systemctl enable xinetd.service
③寫shell腳本定時轉移文件
[root@grafana-sz ~]# vim mkdir.sh #!/bin/bash #
# dirdate=`date +%Y%m%d`_`date +%H%M%S` mkdir -p /networkconfig/$dirdate mv /tmp/network/* /networkconfig/$dirdate
④增加crontab
[root@grafana-sz ~]# crontab -e 30 23 * * * /root/mkdir.sh //每晚23:30執行腳本
