使用expect批量自動備份交換機配置

通過使用expect工具以shell,來實現自動備份交換機配置的功能,從而提高工作效率。


軟件:expect-5.44.1.15-4.el6.i686


目的:通過讀取文件中的內容,自動登錄網絡設備,完成相應命令,最後將讀取的配置信息,保存爲文件。


以下是代碼:

1、main.sh         #通過shell腳本來實現對文件內容的讀取,並調用expect腳本來完成設備配置的讀取與保存。


            #!/bin/bash


            for line in `cat /tmp/hosts.txt`                                      #逐行讀取hosts文件內容

            do

                server=`echo $line |awk -F "|" '{print $1}'`

                login=`echo $line |awk -F  "|" '{print $2}'`

                passwd=`echo $line |awk -F "|" '{print $3}'`

                enpasswd=`echo $line |awk -F "|" '{print $4}'`

 

               ./get_switch_conf.exp $server $login $passwd $enpasswd

            sleep 3

            done


2、get_switch_conf.exp        #通過expect腳本來完成自動登錄設備、讀取信息、保存信息。


            #!/usr/bin/expect -f 


              if { $argc != 4 } {  

                  send_user "用法: $argv0 <server> <login> <password> <enpassword>\n"  

              exit  

              }  

   

           set timeout 1 

           set TERM ANSI  

  

           set SERVER [lindex $argv 0]  

           set LOGIN  [lindex $argv 1]

           set PASSWD [lindex $argv 2]  

           set ENPASSWD [lindex $argv 3]  

  

           spawn telnet  

           expect "telnet> "  

           send "open $SERVER\r"

           sleep 10

           expect "login:"

           send "$LOGIN\r"

           sleep 1

           expect "Password:"  

           send "$PASSWD\r"  

           sleep 1

           expect "*>"  

           send "en\r"  

           sleep 1  

           expect "Password:"  

           send "$ENPASSWD\r"  

           sleep 1  

           expect "*#"  


           log_file /var/log/[clock format [clock seconds] -format "%Y-%m-%d"].$SERVER.log    #生成文件,格式                                                                                                                                                         按時間+IP

           send "show run\r"  


          while (1) {  

                 sleep 1  

                   expect {  

                         " --More-- " { send " " }  

                         "*#" { break }  

                  }   

              }  

         send "exit\r"  

         interact

    

        3、host.txt

         10.207.*.*|admin|password|enpassword

         10.207.*.*|admin|password|enpassword


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章