4.用crontab -e 将脚本添加到计划任务序列中,定期执行。每次自动运行时,新的配置文件会覆盖掉TFTP根目录下旧的配置文件,有审计要求或需要保存多个时间点配置文件的朋友可以在脚本中增加一些创建文件夹、移动文件的命令(黑色表示)。
#!/usr/bin/perl
#backupcisco.pl
use Net::Telnet::Cisco;
use Date::Format; #需要提取当前时间的模块
use Time::ParseDate; #
use Net::Ping::External qw(ping);
#tftp服务器地址
my $tftp = '192.168.4.99';
#设备列表,将你要备份的交换机信息保存到device文本文件中,
#一台设备一行信息 各信息项用"|"分隔 如:IP地址|password|enable password|hostname
#设备文本文件最好写全路径,否则添加进crontab表中后无法正常运行
open(FILE,'/home/ciscoback/profiles/device');
while()
{
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();
}
}
#取当前的时间(年-月-日)
my $ftime = time2str("%Y-%m-%d",parsedate(today));
#根据当前时间创建保存配置文件的文件夹
mkdir ("/home/ciscoback/backfiles/$ftime",0777);
#调用系统shell命令将tftp根目录下的配置文件移动到刚创建的文件夹内
system ("mv /tftpboot/* /home/ciscoback/backfiles/$ftime")