標籤:cisco備份 tftp備份 網路裝置備份 kron
一、背景
客戶要用,需求就是這麼簡單。簡單說一下吧。網路裝置太多了,傳統的手動備份網路裝置配置資訊工作量越來越大,並且不易管理。由此就必須有一種比較簡單的方式了。
二、備份方式一、cisco裝置內建kron命令+TFTP/FTP/HTTP
這種備份方式比較簡單,但是有一定的局限性。因為kron命令在比較新的IOS版本上才有,有些說在12.3(4)以上才有,我測試的版本是12.2(33),也有這個命令。
但是kron命令本身並不能自動按照當前日期來命名備份檔案,所以還需要指令碼來協助wanc
原理圖:
650) this.width=650;" class="alignnone size-full wp-image-261" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;" alt="kron" src="http://www.beyond362.com/wp-content/uploads/2015/01/kron.png" width="589" height="494" />
操作步驟:一、網路裝置操作:
kron命令詳細可參考http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/cns/configuration/xe-3s/asr1000/cns-xe-3s-asr1000-book/cns-cmd-sched.pdf
使用kron命令配置自動備份任務計劃
1、kron policy-list backup #建立任務計劃
2、cli write #儲存當前網路裝置配置,以防止備份資訊不完整
3、cli show run | redirect tftp://172.16.20.223/switch1.cfg #switch1.cfg為備份檔案名,不同裝置使用不同的備份檔案名
4、exit
5、kron occurrence backup at 00:01 1 recurring #每月1日00:01執行備份
6、policy-list backup #啟動計劃任務
7、exit
使用do show kron schedule命令可以查看計劃任務
1、do show kron schedule
二、TFTP伺服器端操作步驟:
service cron restart
三、好了看看備份效果吧
650) this.width=650;" class="alignnone size-full wp-image-263" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;" alt="switch" src="http://www.beyond362.com/wp-content/uploads/2015/01/switch.png" width="628" height="88" />
二、Shell指令碼(Telnet/SSH)+TFTP/FTP/HTTP
這種方式適用於ISO版本過低,沒有kron命令的方式,原理就是通過在linux伺服器上定時執行shell指令碼登入到網路裝置上備份配置資訊到TFTP伺服器實現網裝置配置資訊的自動備份。可以通過Telnet/SSh登陸,Telnet不安全,推薦SSH。如果你一定要用Telnet,那麼稍微修改一下指令碼就可以了。
原理圖:
650) this.width=650;" class="alignnone size-full wp-image-262" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;" alt="ssh" src="http://www.beyond362.com/wp-content/uploads/2015/01/ssh.png" width="860" height="494" />
操作步驟TFTP伺服器端操作步驟:(和第一種方式一樣,需要多裝一個expect)
yum -y install expect
建立交換器配置資訊檔
vi /backup/tftpboot/switch.conf
cisco|172.16.20.1|cisco|cisco
cisco|172.16.20.2|cisco|cisco
說明:一共四列,中間用豎線分割。
第一列:交換器登入使用者名稱;
第二列:交換器登入IP地址;
第三列:交換器登入密碼;
第四列:交換器enable密碼;
每一行為一台交換器的配置資訊。
建立備份指令碼
vi /backup/tftpboot/switch_backup.sh
#!/bin/bash
Date=`date +%F`
TFTP=172.16.20.223 #TFTP伺服器IP地址,只需要改這一個
#我建立了兩個模組,我解釋一下,因為第一次訪問的時候會提示你是否信任該主機,然後將該主機資訊添加到known_hosts檔案中,而以後訪問的時候只要在known_hosts檔案中發現有此主機,就不會再次詢問,那麼使用同一組expect語言就會報錯,所以寫了兩個函數,一個用來第一次登陸,一個用來信任主機之後登陸,比較拙劣。
first_login() {
expect <<EOF
spawn ssh [email protected]$server
expect "(yes/no)"
send "yes\r"
sleep 1
expect "Password:"
send "$passwd\r"
sleep 1
expect "*>"
send "en\r"
sleep 1
expect "Password:"
send "$enpasswd\r"
sleep 1
expect "*#"
send "copy startup-config tftp:\r"
expect "Address"
send "${TFTP}\r"
expect "Destination"
send "${server}-${Date}.conf\r"
sleep 5
send "exit\r"
interact
EOF
}
login() {
expect <<EOF
spawn ssh [email protected]$server
sleep 1
expect "Password:"
send "$passwd\r"
sleep 1
expect "*>"
send "en\r"
sleep 1
expect "Password:"
send "$enpasswd\r"
sleep 1
expect "*#"
send "copy startup-config tftp:\r"
expect "Address"
send "${TFTP}\r"
expect "Destination"
send "${server}-${Date}.conf\r"
sleep 5
send "exit\r"
interact
EOF
}
for line in `cat /backup/tftpboot/switch.conf`
do
name=`echo $line |awk -F "|" ‘{print $1}‘`
server=`echo $line |awk -F "|" ‘{print $2}‘`
passwd=`echo $line |awk -F "|" ‘{print $3}‘`
enpasswd=`echo $line |awk -F "|" ‘{print $4}‘`
if grep "$server" $HOME/.ssh/known_hosts > /dev/null 2>&1;then
login
else
first_login
fi
sleep 3
done
執行指令碼、添加計劃任務
chmod +x /backup/tftpboot/switch_backup.sh
echo ‘01 0 1 * * /bin/sh /backup/tftpboot/switch_backup.sh > /dev/null 2>&1‘ >> /var/spool/cron/root
chmod 600 /var/spool/cron/root
service cron restart
網路裝置操作:a) 配置登入使用者名稱和密碼,配置enable密碼
b) 配置ssh v2版本登入
OK,比較簡單,到這裡就結束了。來看一下效果。
650) this.width=650;" class="alignnone size-full wp-image-264" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;" alt="ssh1" src="http://www.beyond362.com/wp-content/uploads/2015/01/ssh1.png" width="718" height="108" />
OK,備份完成。
本文出自 “Linux步行街” 部落格,請務必保留此出處http://mybsir.blog.51cto.com/4618614/1606711
cisco網路裝置配置自動備份