-
Notifications
You must be signed in to change notification settings - Fork 0
/
dhcpd-unused.php
127 lines (90 loc) · 2.76 KB
/
dhcpd-unused.php
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?php
include( "intel_header.php" );
$path = "/var/www/html/";
$boardsfiles = array();
$boardsfiles[] = "data/boards.DataCenter";
$boardsfiles[] = "data/boards.ServerRack";
$boardsfiles[] = "data/boards.SV";
$boardsfiles[] = "data/boards.SW";
$boardsfiles[] = "data/boards.RackRoom";
$boardsfiles[] = "data/boards.RackRoom2";
$leases = array();
print "<h2>Cross Reference VLANs Leases with Ping Stats</h2>\n";
print "<font style='color:#cc0000;font-weight:bold'>Disclaimer: An error deviation should be considered when dealing with ping stats.<br><br></font>";
print "<h4>LMT Database assigned leases</h4><br>\n";
foreach( $boardsfiles as $boardfile )
{
print "Reading <a href='$boardfile'>http:/siedhcp.ir.intel.com/$boardfile</a><br>\n";
$fp = @fopen( $path . $boardfile , 'r' );
if( $fp )
{
$chunk = fread( $fp , filesize( $path . $boardfile ) );
$lines = explode( "\n" , $chunk );
foreach( $lines as $line )
{
$entry = explode( " " , $line );
if( count( $entry ) < 3 ) continue;
$leases[] = array( $entry[0] , $entry[1] , $entry[2] , $boardfile );
}
fclose( $fp );
}
}
print "<br><h4>DHCP Server Ping Stats</h4><br>\n";
print "Reading dead from <a href='logs/ping-stats.txt'>http://siedhcp.ir.intel.com/logs/ping-stats.txt</a><br><br>";
$dead = "";
$fp = fopen( $path . "logs/ping-stats.txt" , 'r' );
if( $fp )
{
$chunk = fread( $fp , filesize( $path . "logs/ping-stats.txt" ) );
$num = preg_match_all( "/\"dead\" : \[.*?\]/sm" , $chunk , $matches );
$matches = $matches[0];
foreach( $matches as $match )
{
$dead .= $match;
}
}
print "<h4>Begin Comparison</h4><br>\n";
$g = 1;
print "<table cellpadding='2' width='800'>";
print "<tr><th>#</th><th>IXA</th><th>MAC</th><th>IP</th><th>Source</th><th>Comment</th><th>DHCP Offers 30 Days</th></tr>";
$dhcploglines = file( $path . "logs/leases-30-days-not-found.txt" );
function indhcplogs( $mac )
{
global $dhcploglines;
foreach( $dhcploglines as $line )
{
if( stristr( $line , $mac ) )
{
$bits = explode( "|" , $line );
return $bits[1];
}
}
return 0;
}
if( isset( $argv[1] ) )
{
$myFile = $path . "/logs/leases-30-days-not-found.txt";
$fp = fopen( $myFile, 'w' );
}
foreach( $leases as $lease )
{
if( stristr( $dead , "\"$lease[2]\"" ) )
{
if( isset( $argv[1] ) )
{
$offers = shell_exec( "grep \"DHCPOFFER.*" . strtolower( $lease[1] ) . "\" /var/log/dhcpd.log* | wc -l" );
fwrite( $fp, $lease[1] . "|" . $offers );
}
else
{
print "<tr><td>$g</td><td>" . $lease[0] . "</td><td>" . $lease[1] . "</td><td>" . $lease[2] . "</td><td>" . $lease[3] . "</td><td style='color:#cc0000'>Unused lease</td><td>" . indhcplogs( $lease[1] ) . "</td></tr>\n";
}
$g++;
}
}
if( isset( $argv[1] ) )
{
fclose( $fp );
}
print "</table>";
include( "intel_footer.php" );