aboutsummaryrefslogtreecommitdiffstats
path: root/clients/dhcptail.pl
diff options
context:
space:
mode:
Diffstat (limited to 'clients/dhcptail.pl')
-rwxr-xr-xclients/dhcptail.pl74
1 files changed, 74 insertions, 0 deletions
diff --git a/clients/dhcptail.pl b/clients/dhcptail.pl
new file mode 100755
index 0000000..e7898aa
--- /dev/null
+++ b/clients/dhcptail.pl
@@ -0,0 +1,74 @@
+#! /usr/bin/perl
+use DBI;
+use POSIX;
+use lib '../include';
+use nms;
+use strict;
+use warnings;
+
+BEGIN {
+ require "../include/config.pm";
+ eval {
+ require "../include/config.local.pm";
+ };
+}
+
+my $year = $nms::config::tgname;
+$year =~ s/tg/20/; # hihi
+
+my %months = (
+ Jan => 1,
+ Feb => 2,
+ Mar => 3,
+ Apr => 4,
+ May => 5,
+ Jun => 6,
+ Jul => 7,
+ Aug => 8,
+ Sep => 9,
+ Oct => 10,
+ Nov => 11,
+ Dec => 12
+);
+
+my ($dbh, $q, $cq);
+open(SYSLOG, "tail -n 9999999 -F /var/log/syslog |") or die "Unable to tail syslog: $!";
+while (<SYSLOG>) {
+ /(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+(\d+)\s+(\d+:\d+:\d+).*DHCPACK on (\d+\.\d+\.\d+\.\d+) to (\S+)/ or next;
+ my $date = $year . "-" . $months{$1} . "-" . $2 . " " . $3;
+ my $machine = $5;
+ my $owner_color;
+
+ if ($machine eq '00:15:c5:42:ce:e9') {
+ $owner_color = '#00ff00'; # Steinar
+ } elsif ($machine eq '00:1e:37:1c:d2:65') {
+ $owner_color = '#c0ffee'; # Trygve
+ } elsif ($machine eq '00:16:d3:ce:8f:a7') {
+ $owner_color = '#f00f00'; # Jon
+ } elsif ($machine eq '00:16:d4:0c:8a:1c') {
+ $owner_color = '#ff99ff'; # Jørgen
+ } elsif ($machine eq '00:18:8b:aa:2f:f8') {
+ $owner_color = '#663300'; # Kjetil
+ } elsif ($machine eq '00:15:58:29:14:e3') {
+ $owner_color = '#f1720f'; # Bård
+ } else {
+ $owner_color = "#000000"; # Unknown
+ }
+
+ if (!defined($dbh) || !$dbh->ping) {
+ $dbh = nms::db_connect();
+ $q = $dbh->prepare("UPDATE dhcp SET last_ack=? WHERE ?::inet << network AND ( last_ack < ? OR last_ack IS NULL )")
+ or die "Couldn't prepare query";
+ $cq = $dbh->prepare("UPDATE dhcp SET owner_color=? WHERE ?::inet << network AND owner_color IS NULL")
+ or die "Couldn't prepare query";
+ }
+
+ print STDERR "$date $4\n";
+ $q->execute($date, $4, $date)
+ or die "Couldn't push $1 into database";
+ if (defined($owner_color)) {
+ $cq->execute($owner_color, $4)
+ or die "Couldn't push $1 into database";
+ }
+}
+close SYSLOG;