backupswitches.in 2.25 KB
Newer Older
1
2
#!/usr/bin/perl
#
3
# Copyright (c) 2005, 2006 University of Utah and the Flux Group.
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 
# {{{EMULAB-LICENSE
# 
# This file is part of the Emulab network testbed software.
# 
# This file is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or (at
# your option) any later version.
# 
# This file is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public
# License for more details.
# 
# You should have received a copy of the GNU Affero General Public License
# along with this file.  If not, see <http://www.gnu.org/licenses/>.
# 
# }}}
23
24
25
26
27
28
29
30
#

my $BACKUPDIR = '@prefix@/backup/switch-config';
my $TMPFILE = "/tftpboot/switch-backup";
my $GRAB = "@prefix@/sbin/grabswitchconfig";

use lib '@prefix@/lib';
use libdb;
31
32
use lib '@prefix@/lib/snmpit_test';
use snmpit_lib;
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

use strict;
use English;

sub usage() {
    print "Usage: backupswitches <switches...>\n";
    exit 1;
}

if ($UID && !TBAdmin($UID)) {
    die "*** $0:\n" .
        "    Sorry, only admins get to run this script\n";
}

if (!@ARGV) {
    usage();
}

#
# Get today's date, nicely formatted
#
my ($junk,$junk,$junk,$mday,$mon,$year,$junk,$junk,$junk) = localtime(time);
$year += 1900;
$mon = sprintf("%02d",$mon + 1);
$mday = sprintf("%02d",$mday);
my $datestr = "$year-$mon-$mday";

#
# Back up each switch in turn
#
63
unlink $TMPFILE;
64
foreach my $switch (@ARGV) {
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
    #
    # Is it a Cisco or maybe an HP
    my $type = getDeviceType($switch);
    if ($type !~ /cisco/ && $type !~ /catalyst/ && $type !~ /hp/ ) {
	die " *** $0:\n" .
	    "     only Cisco and Procurves supported NOT (type $type)\n";
    }
    if ($type =~ /cisco/ || $type =~ /catalyst/ ) {
	system "$GRAB $switch $TMPFILE"
	    and die "Unable to grab config for $switch\n";
	system "mv $TMPFILE $BACKUPDIR/$switch-$datestr\n"
	    and die "Unable to move config file to $BACKUPDIR/$switch-$datestr\n";
    }
    if ($type =~ /hp/ ) {
	system "scp $switch:/cfg/running-config $BACKUPDIR/$switch-$datestr\n"
	    and die "Unable to grab and save config for $switch\n"
    }
82
83
84
}

exit 0;