blob: b0eb57d392753bf8a0341efe3207a96bf6fbaad3 (
plain)
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
|
#! /usr/bin/perl
use DBI;
use POSIX;
use Time::HiRes;
use Net::Oping;
use Data::Dumper;
use strict;
use warnings;
use lib '../include';
use nms;
my $dbh = nms::db_connect();
$dbh->{AutoCommit} = 0;
$dbh->{RaiseError} = 1;
my $q = $dbh->prepare("SELECT switch,ip FROM switches WHERE ip<>'127.0.0.1'");
while (1) {
my $ping = Net::Oping->new;
$ping->timeout(0.2);
$q->execute;
my %ip_to_switch = ();
while (my $ref = $q->fetchrow_hashref) {
my $switch = $ref->{'switch'};
my $ip = $ref->{'ip'};
$ping->host_add($ip);
$ip_to_switch{$ip} = $switch;
}
my $result = $ping->ping();
die $ping->get_error if (!defined($result));
$dbh->do('COPY ping (switch, latency_ms) FROM STDIN'); # date is implicitly now.
while (my ($ip, $latency) = each %$result) {
my $switch = $ip_to_switch{$ip};
if (!defined($latency)) {
$dbh->pg_putcopydata("$switch\t\\N\n");
} else {
$dbh->pg_putcopydata("$switch\t$latency\n");
}
}
$dbh->pg_putcopyend();
$dbh->commit;
sleep 1;
}
|