分类: 系统运维
2009-12-29 10:36:08
系统为centos 4.7 server,系统默认安装的时候没有安装expect包,yum install expect
如果要备份一个cisco的路由器touch backupcisco
#!/usr/bin/expect
spawn telnet xxx.xxx.xxx.xxx
expect "Password:"
send "******
"
expect "ITS-SHA>"
send "en
"
expect "Password:"
send "******
"
expect "ITS-SHA#"
send "copy running-config tftp
"
expect "host*"
send "bbb.bbb.bbb.bbb
"
expect "its-sha-confg*"
send "c2611_config
"
expect "ITS-SHA#"
send "exit
"
当然,你要自己配置一个TFTP server,当然配置tftp server相当的简单,不会对大家有任何困难。yum install tftp
修改一下配置 vi /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/tftp -c #modify the path of tftp server
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
以上完成,就可以重启一个xinetd的服务,service xinetd restart
这样 你的tftp就工作了。
以上完成了expect,其实已经有了一个备份的文件,但追求完美的你一定会觉得,如果我第二次再备份,不就会重写这个文件,导致以前的备份丢失吗?
对的。
那我们就做一个shell来完成以后的工作
touch ciscobackup.sh
#/bin/bash
# Remove old backups
find /var/tftp/*_config -exec rm -fr {} ; > /dev/null 2>&1
expect /backupcisco
# Create the filename for the backup
eval `date "+day=%d; month=%m; year=%Y"`
DATE="$year-$month-$day"
mv /var/tftp/c2611_config /var/tftp/$DATE-sha-c2611
mv /var/tftp/c3750_config /var/tftp/$DATE-sha-c3750
mv /var/tftp/c3845_config /var/tftp/$DATE-sha-c3845
mv /var/tftp/HZ3825_config /var/tftp/$DATE-hzh-c3825
mv /var/tftp/HZ3560_config /var/tftp/$DATE-hzh-c3560
mv /var/tftp/asa5510_config /var/tftp/$DATE-hzh-asa5510
#compress and remove source files
tar -zcvf /var/tftp/$DATE-net-backup.tar.gz /var/tftp/$DATE* --remove-files
这样你的备份文件就会以2009-06-10-net-backup.tar.gz的方式存储在机器里,就不用担心第二次会重写了。你还可以锦上添花的做一个email通知,配置sendmail我就不在这里说了。以后有机会,我再写一个它的配置。其实只要在原来的shell后加上两行就能解决这个要求
#mail backup file to network admin
echo "This is a Networkbackup file" |mutt -a /var/tftp/$DATE-net-backup.tar.gz -s $DATE-NetWorkBackupFile
admin@testcisco.com
这样一个完美的expect加shell做的备份脚本就做好了。
测试: . /ciscobackup.sh
看看你的文件是不是已经备份成功了!
将它加入到计划任务中:
crontab -e
0 1 * * * nice -n 15 /ciscobackup.sh
每天的一点做一次备份任务!
这样,一个完整的备份工作就完成了,是不是比起手工去做要省事省心的多!:)