前面两篇博文已经说明如何备份配置文件,expect脚本的功能就是提供交互,登录每台交换机执行备份命令将其copy到tftp服务器上。但在我们平常工作的时候,一般备份的方法就是dis cu或sh run然后将屏幕上的信息复制下来,其实将之前的脚本稍加改动就可以利用这种方法来备份配置,当然这种方法不光可以备份配置文件,只需替换相关的命令,备份任何在屏幕输出的信息都可以。下面我们以备份mac地址为例来说明一下。

1. loginfo.exp

#! /usr/bin/expect
set ip [lindex $argv 0]
set timeout 1
spawn ssh -v -1 -c des -q -o StrictHostKeyChecking=no wang11@game-inc.com@$ip

expect "*password:"

send "p@ssw0rd\r"

expect "*>"

send "dis mac-add | ex Eth-Trunk \r"

log_file $ip.log #记录输出的信息到$ip.log

while (1) {
        sleep 1
        expect {
                " ---- More ----" { send " " } #若匹配" ----More ----",则不断的按空格键
                "Total*" { break } #匹配"Total*" 则返回跳出循环 
        }
}

expect ">"
send "quit\n"
expect eof

2. loop.sh

#! /bin/sh

while read ip

do

./loginfo.exp $ip

done < ip.txt

3. tar.sh

#! /bin/sh

sh loop.sh

tar jcvf $(date +%Y%m%d).tar.bz2 *.log

rm -rf *.log