Linux下搭建TFTP服务器实现定期自动备份CISCO交换机配置文件

EricaYue 2010-12-19

一、想法背景

目前公司需要管理的CISCO交换机数目较多,手动备份交换机配置文件较为繁琐,有时间还忘记了备份。一旦交换机出故障,再加上没有备份配置文件的话,恢复起来就困难了。
手工备份一台交换机配置文件步骤一般如下:
1.在自己的电脑上运行TFTP服务器端;
2.telnet到cisco交换机
3.使用copy startup-config tftp: 等命令上传config文件到TFTP服务器上。
可不可以在linux上用脚本来模拟这种行为,然后再将脚本添加到crontab中定时自动运行呢?
既然写这个文章,当然可以啦!

二、实现步骤

1.首先是在Linux上安装TFTP服务器,怎么安装和测试TFTP服务器请参照我先前写的《CentOS 5.3 安装TFTP》
2.脚本语言最好使用Perl,Perl脚本语言我也是刚接触,据我粗略的了解,其功能相当强大!至于多强大,你自己放狗搜呗!我主要是看好它有很多模块供你使用,其中就有Net::Telnet::Cisco模块。CentOS默认是安装了Perl的,你也可以用yum更新到最新版。Net::Telnet::Cisco模块默认是没有的,需要安装,安装方式请参照我先前写的《Linux下Perl 模块安装方法》
3.参考我下面的Perl脚本,脚本需要添加执行权限这些我就不累述了。
#!/usr/bin/perl
#backupcisco.pl

use Net::Telnet::Cisco;
use Net::Ping::External qw(ping);

#tftp服务器地址
my $tftp = '192.168.4.99';

while(<FILE>)
{
chomp;
my @fields = split(/\|/,$_);   #以分隔符提取各项登录参数
my $host = $fields[0];
print "host:$host\t";             #设备的ip地址
my $pwd = $fields[1];             #登陆密码
print "pwd:$pwd\t";
my $enpwd = $fields[2];           #enable密码
my $hostname = $fields[3];
print "hostname: $hostname\n";

my $alive = ping(host => $host);   #测试交换机是否能ping通
print "alive: $alive\n";

if ($alive) {
$r = Net::Telnet::Cisco->new(Host=>$host);

$r->login("admin",$pwd);

$r->enable($enpwd);

$r->cmd("copy startup-config tftp\n" . "$tftp\n\n");

$r->close();
}
}

直接运行脚本测试是否将device文本中所列交换机配置文件上传到TFTP根目录下。

相关推荐