X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=web%2Fsmanagement.pl;h=de7e1b8d134d4df33b69b99bfae02d59e7c810fd;hb=40d6c7e02855fa3bb3cf35805efe853051c88ea5;hp=b900f1ea53e140d0c45460c0f7dd5d7c41052866;hpb=9180f8278b332f8eb6c65a11d6f284f5facf6722;p=nms
diff --git a/web/smanagement.pl b/web/smanagement.pl
index b900f1e..de7e1b8 100755
--- a/web/smanagement.pl
+++ b/web/smanagement.pl
@@ -4,6 +4,7 @@ use strict;
use CGI;
use DBI;
use Data::Dumper;
+use Switch;
use lib '../include';
use nms;
@@ -22,37 +23,21 @@ my $sgetip = $dbh->prepare("SELECT ip FROM switches WHERE sysname = ?")
or die "Could not prepare sgetip";
my $sgid = $dbh->prepare("SELECT nextval('squeue_group_sequence') as gid");
-# Send a command to switch and return the data recvied from the switch
-sub switch_exec($$) {
- my ($cmd, $conn) = @_;
-
- # Send the command and get data from switch
- my @data = $conn->cmd($cmd);
- my @lines = ();
- foreach my $line (@data) {
- # Remove escape-7 sequence
- $line =~ s/\x1b\x37//g;
- push (@lines, $line);
- }
-
- return @lines;
-}
-
sub parse_range($) {
my $switches = $_;
my @range;
my @rangecomma = split(/\s*,\s*/, $switches);
foreach (@rangecomma) {
- my ($first, $drop1, $last, $drop2) = $_ =~ /(e\d+\-[123456])(sw)?\s*\-\s*(e\d+\-[123456])?(sw)?/;
- if (!defined($first) && $_ =~ /e\d+\-[123456]/) {
+ my ($first, $last) = $_ =~ /(e\d+\-(?:sw)?[123456])\s*\-\s*(e\d+\-(?:sw)?[123456])?/;
+ if (!defined($first) && $_ =~ /e\d+\-(sw)?[123456]/) {
$first = $_;
}
if (!defined($first)) {
print "Parse error in: $_
\n";
next;
}
- my ($rowstart, $placestart) = $first =~ /e(\d+)\-([123456])/;
+ my ($rowstart, $placestart) = $first =~ /e(\d+)\-(?:sw)?([123456])/;
if (!defined($rowstart) || !defined($placestart)) {
print "Parse error in: $_
\n";
next;
@@ -63,7 +48,7 @@ sub parse_range($) {
$placeend = $placestart;
}
else {
- ($rowend, $placeend) = $last =~ /e(\d+)\-([123456])/;
+ ($rowend, $placeend) = $last =~ /e(\d+)\-(?:sw)?([123456])/;
}
if (!defined($rowend) || !defined($placeend)) {
print "Parse error in: $_
\n";
@@ -80,7 +65,7 @@ sub parse_range($) {
}
for (my $j = $dostart; $j <= 6; $j++) {
last if ($i == $rowend && $j > $placeend);
- push(@range, "e$i-$j");
+ push(@range, "e$i-sw$j");
}
}
}
@@ -93,9 +78,9 @@ sub parse_range($) {
sub get_addr_from_switchnum($) {
my ($sysname) = @_;
- $sgetip->execute($sysname."sw");
+ $sgetip->execute($sysname);
if ($sgetip->rows() < 1) {
- print "Could not get the ip for: ".$sysname."sw";
+ print "Could not get the ip for: ".$sysname;
return undef;
}
my $row = $sgetip->fetchrow_hashref();