or die "Couldn't prepare qlock";
my $qunlock = $dbh->prepare("UPDATE switches SET locked='f', last_updated=now() WHERE switch=?")
or die "Couldn't prepare qunlock";
-my $qpoll = $dbh->prepare("INSERT INTO polls (time, switch, port, bytes_in, bytes_out) VALUES (timeofday()::timestamp,?,?,?,?)")
+my $qpoll = $dbh->prepare("INSERT INTO polls (time, switch, port, bytes_in, bytes_out, errors_in, errors_out) VALUES (timeofday()::timestamp,?,?,?,?,?,?)")
or die "Couldn't prepare qpoll";
my $qtemppoll = $dbh->prepare("INSERT INTO temppoll (time, switch, temp) VALUES (timeofday()::timestamp,?::text::int,?::text::float)")
or die "Couldn't prepare qtemppoll";
exit;
} else {
mylog("No available switches in pool, sleeping.");
- sleep 60;
+ sleep 15;
next;
}
}
for my $port (@ports) {
my $in = fetch_data($session, $port, 0, $switch->{'wide_counters'});
my $out = fetch_data($session, $port, 1, $switch->{'wide_counters'});
+ my $ine = fetch_errors($session, $port, 0);
+ my $oute = fetch_errors($session, $port, 1);
- $qpoll->execute($switch->{'switch'}, $port, $in, $out);
+ $qpoll->execute($switch->{'switch'}, $port, $in, $out, $ine, $oute);
}
my $conn = switch_connect($ip);
if (!defined($conn)) {
print $avgtemp." avgtemp\n";
$qtemppoll->execute($switch->{'switch'},
$avgtemp) or die "Could not exec qtemppoll";
- } elsif ($switch->{'switchtype'} eq 'cisco6509') {
+ } elsif ($switch->{'switchtype'} eq 'cisco6509' && 0) {
# fetch load data for the entities
for my $i (1..5) {
# find the ID
return fetch_snmp($session, $oid);
}
+sub fetch_errors {
+ my ($session, $port, $out) = @_;
+
+ my $oid;
+ if ($out) {
+ $oid = BER::encode_oid(1, 3, 6, 1, 2, 1, 2, 2, 1, 20, $port); # interfaces.ifTable.ifEntry.ifOutErrors
+ } else {
+ $oid = BER::encode_oid(1, 3, 6, 1, 2, 1, 2, 2, 1, 14, $port); # interfaces.ifTable.ifEntry.ifInErrors
+ }
+
+ return fetch_snmp($session, $oid);
+}
sub fetch_snmp {
my ($session, $oid) = @_;
printf STDERR "[%s] %s\n", $time, $msg;
}
-sub switch_exec {
- my ($cmd, $conn) = @_;
-
- # Send the command and get data from switch
-# $conn->dump_log(*STDOUT);
- 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 switch_connect {
- my ($ip) = @_;
-
- my $conn = new Net::Telnet( Timeout => $timeout,
- Dump_Log => '/tmp/dumplog-tempfetch',
- Errmode => 'return',
- Prompt => '/es-3024|e(\-)?\d+\-\dsw>/i');
- my $ret = $conn->open( Host => $ip);
- if (!$ret || $ret != 1) {
- return (0);
- }
- # XXX: Just send the password as text, I did not figure out how to
- # handle authentication with only password through $conn->login().
- #$conn->login( Prompt => '/password[: ]*$/i',
- # Name => $password,
- # Password => $password);
- my @data = $conn->cmd($password);
- # Get rid of banner
- $conn->get;
- return $conn;
-}
+#sub switch_exec {
+# my ($cmd, $conn) = @_;
+#
+# # Send the command and get data from switch
+## $conn->dump_log(*STDOUT);
+# 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 switch_connect {
+# my ($ip) = @_;
+#
+# my $conn = new Net::Telnet( Timeout => $timeout,
+# Dump_Log => '/tmp/dumplog-tempfetch',
+# Errmode => 'return',
+# Prompt => '/es-3024|e(\-)?\d+\-\dsw>/i');
+# my $ret = $conn->open( Host => $ip);
+# if (!$ret || $ret != 1) {
+# return (0);
+# }
+# # XXX: Just send the password as text, I did not figure out how to
+# # handle authentication with only password through $conn->login().
+# #$conn->login( Prompt => '/password[: ]*$/i',
+# # Name => $password,
+# # Password => $password);
+# my @data = $conn->cmd($password);
+# # Get rid of banner
+# $conn->get;
+# return $conn;
+#}