1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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
63
| #!/usr/bin/perl
# LICENSE: GNU General Public License v2. (see LICENSE.txt)
# COPYRIGHT: Copyright 2010 Christian Heim <christian.heim@barfoo.org>
# This script runs a batch of commands on a list of FC-switches. For example:
# fc-switch-commands.pl statsclear | configupload | supportsave
use strict;
use warnings;
use Net::Telnet;
our( @san_fabric1_core, @san_fabric1_edge_1, @san_fabric1_edge_2 );
our( @san_fabric2_core, @san_fabric2_edge_1, @san_fabric2_edge_2 );
our( @switches );
our( $ftp_host, $ftp_username, $ftp_password );
our( $telnet );
our( $i, $version, @debug );
@san_fabric1_core = ( "10.144.20.50", "admin", "JuNxJFSAS!", 'san_fabric1_core' );
@san_fabric1_edge_1 = ( "10.144.20.51", "admin", "JuNxJFSAS!", 'san_fabric1_edge_1' );
@san_fabric1_edge_2 = ( "10.144.20.52", "admin", "JuNxJFSAS!", 'san_fabric1_edge_2' );
@san_fabric2_core = ( "10.144.20.60", "admin", "JuNxJFSAS!", 'san_fabric2_core' );
@san_fabric2_edge_1 = ( "10.144.20.61", "admin", "JuNxJFSAS!", 'san_fabric2_edge_1' );
@san_fabric2_edge_2 = ( "10.144.20.62", "admin", "JuNxJFSAS!", 'san_fabric2_edge_2' );
$ftp_host = '10.144.20.45';
$ftp_username = 'brocade_cfg';
$ftp_password = 'JuNxJPFC!';
@switches = ( @san_fabric1_core, @san_fabric2_core,
@san_fabric1_edge_1, @san_fabric1_edge_2,
@san_fabric2_edge_1, @san_fabric2_edge_2 );
@debug = ( Dump_Log => 'dump.log', Output_Log => 'out.log', Input_Log => 'in.log' );
$telnet = new Net::Telnet(Timeout=>240, Errmode=>'die',
Prompt => '/.*:admin> $/is', @debug);
for ($i = 0; $i < $#switches + 1; $i++) {
$telnet->open($switches[$i][0]);
$telnet->login($switches[$i][1], $switches[$i][2]);
if ( $ARGV[0] eq "statsclear" ) {
$telnet->cmd("statsclear");
} elsif ( $ARGV[0] eq "configupload" ) {
# Check the FabricOS version, as Brocade decided to break compatiblity with
# earlier firmware versions w/ v6 (at least configupload)
$telnet->cmd("firmwareshow");
$version = $telnet->lastline;
$version =~ s/s+|s+$//g;
if ( $version =~ "v6" ) {
$telnet->cmd("configupload -all -ftp "$ftp_host","$ftp_username","$switches[$i][3].cfg","$ftp_password"");
} else {
$telnet->cmd("configupload "$ftp_host","$ftp_username","$switches[$i][3].cfg","$ftp_password"");
}
} elsif ( $ARGV[0] eq "supportsave" ) {
$telnet->cmd("supportsave -n -u "$ftp_username" -p "$ftp_password" -h "$ftp_host" -d "supportsave/$switches[$i][3]" -l ftp");
}
$telnet->close();
}
|