前面两篇文章已经说明如何备份配置文件,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