撰寫了一個expect腳本,希望實作自動登錄交換機,并將配置自動備份到TFTP服務器上,交換機的管理IP和設備名記錄在文本檔案中,通過while陳述句回圈讀取進行登錄
完整腳本內容如下:
#!/usr/bin/expect
set HOSTS /root/switchip
set OPENFILE [open $HOSTS r]
set USERNAME admin
set PASSWORD1 ******
set PASSWORD2 ******
set SERVER_IP 10.100.100.103
while {[gets $OPENFILE line] >= 0} {
set MGT_IP [lindex $line 0]
set DEVICE_NAME [lindex $line 1]
set timeout 10
spawn telnet $MGT_IP
expect "Username:" {send "$USERNAME\r"}
expect "Password:" {send "$PASSWORD1\r"}
expect "*>" {send "enable\r"}
expect "Password" {send "$PASSWORD1\r"}
expect "*#" {send "copy running-config startup-config\r"}
send "\r"
expect "OK" {send "copy startup-config tftp\r"}
expect "Address" {send "$SERVER_IP\r"}
expect "filename" {send "/switch_config/$DEVICE_NAME.cfg\r"}
send "exit\r"
puts "The configuration of $DEVICE_NAME has been saved to server"
expect eof
wait
}
close $OPENFILE
puts "All configurations have been saved to the server"
但是由于總會有些交換機由于故障或其他原因無法正常登錄上去,這時后續命令執行就會報錯,導致回圈無法繼續進行,運行結果如下:

經過測驗,在沒有故障登錄點的情況下,整個備份流程下來是沒有問題的,我希望實作在有交換機無法登錄時,可以不執行后邊的陳述句,直接結束本次回圈,進入下一次回圈(類似于continue),但expect剛接觸,搜了很多帖子也沒有這種案例,不知道怎么實作,還望熟悉expect的大佬給點參考意見,如果有其他解決思路也可以賜教,拜謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/127252.html
標籤:專題技術討論區
上一篇:萌新求助
下一篇:模擬電路
