Rewriting database to use more sensible field names... ACK!

git-svn-id: http://www.observium.org/svn/observer/trunk@63 61d68cd4-352d-0410-923a-c4978735b2b8
This commit is contained in:
Adam Amstrong 2007-04-07 21:15:23 +00:00
parent a611957bbe
commit 23d2fd380d
14 changed files with 139 additions and 133 deletions

View File

@ -7,7 +7,7 @@ include("config.php");
include("includes/functions.php");
$query = "SELECT *,A.id as id FROM ipaddr AS A, interfaces as I, devices as D
WHERE A.interface_id = I.id AND I.host = D.id AND D.status = '1' AND I.id LIKE '%$argv[1]'";
WHERE A.interface_id = I.interface_id AND I.device_id = D.id AND D.status = '1'";
$data = mysql_query($query);
while($row = mysql_fetch_array($data)) {
@ -22,29 +22,28 @@ while($row = mysql_fetch_array($data)) {
}
}
$query = "SELECT *, I.id as id FROM interfaces AS I, devices as D
$query = "SELECT * FROM interfaces AS I, devices as D
WHERE I.host = D.id AND D.status = '1'";
$data = mysql_query($query);
while($row = mysql_fetch_array($data)) {
$id = $row['id'];
$index = $row[ifIndex];
$hostname = $row['hostname'];
$community = $row['community'];
$response = trim(`snmpget -v2c -Osq -c $community $hostname ifIndex.$index | cut -d " " -f 2`);
if($response != $index) {
mysql_query("delete from interfaces where id = '$id'");
echo("Deleted $row[if] from $hostname\n");
mysql_query("delete from interfaces where id = '" . $row['interface_id'] . "'");
echo("Deleted $row[ifDescr] from $hostname\n");
}
}
echo(mysql_result(mysql_query("SELECT COUNT(*) FROM `interfaces`"), 0) . " interfaces at start\n");
$interface_query = mysql_query("SELECT id,host FROM `interfaces`");
$interface_query = mysql_query("SELECT interface_id,device_id FROM `interfaces`");
while ($interface = mysql_fetch_array($interface_query)) {
$host = $interface['host'];
$id = $interface['id'];
if(mysql_result(mysql_query("SELECT COUNT(*) FROM `devices` WHERE `id` = '$host'"), 0) == '0') {
mysql_query("delete from interfaces where `id` = '$id'");
echo("Deleting if $id \n");
$device_id = $interface['device_id'];
$interface_id = $interface['interface_id'];
if(mysql_result(mysql_query("SELECT COUNT(*) FROM `devices` WHERE `id` = '$device_id'"), 0) == '0') {
mysql_query("delete from interfaces where `interface_id` = '$interface_id'");
echo("Deleting if $interface_id \n");
}
}
echo(mysql_result(mysql_query("SELECT COUNT(*) FROM `interfaces`"), 0) . " interfaces at end\n");
@ -55,7 +54,7 @@ while ($link = mysql_fetch_array($link_query)) {
$id = $link['id'];
$src = $link['src_if'];
$dst = $link['dst_if'];
if(mysql_result(mysql_query("SELECT COUNT(id) FROM `interfaces` WHERE `id` = '$src'"), 0) == '0' || mysql_result(mysql_query("SELECT COUNT(id) FROM `interfaces` WHERE `id` = '$dst'"), 0) == '0') {
if(mysql_result(mysql_query("SELECT COUNT(interface_id) FROM `interfaces` WHERE `interface_id` = '$src'"), 0) == '0' || mysql_result(mysql_query("SELECT COUNT(*) FROM `interfaces` WHERE `interface_id` = '$dst'"), 0) == '0') {
mysql_query("delete from links where `id` = '$id'");
echo("Deleting link $id \n");
}
@ -63,12 +62,12 @@ while ($link = mysql_fetch_array($link_query)) {
echo(mysql_result(mysql_query("SELECT COUNT(id) FROM `links`"), 0) . " links at end\n");
echo(mysql_result(mysql_query("SELECT COUNT(adj_id) FROM `adjacencies`"), 0) . " adjacencies at start\n");
$link_query = mysql_query("SELECT * FROM `adjacencies` AS A, `interfaces` AS I, `devices` AS D, networks AS N WHERE I.id = A.interface_id AND D.id = I.host AND N.id = A.network_id;");
$link_query = mysql_query("SELECT * FROM `adjacencies` AS A, `interfaces` AS I, `devices` AS D, networks AS N WHERE I.interface_id = A.interface_id AND D.id = I.device_id AND N.id = A.network_id;");
while ($link = mysql_fetch_array($link_query)) {
$id = $link['adj_id'];
$netid = $link['network_id'];
$ifid = $link['interface_id'];
if(mysql_result(mysql_query("SELECT COUNT(id) FROM `interfaces` WHERE `id` = '$ifid'"), 0) == '0' || mysql_result(mysql_query("SELECT COUNT(id) FROM `networks` WHERE `id` = '$netid'"), 0) == '0') {
if(mysql_result(mysql_query("SELECT COUNT(*) FROM `interfaces` WHERE `interface_id` = '$ifid'"), 0) == '0' || mysql_result(mysql_query("SELECT COUNT(id) FROM `networks` WHERE `id` = '$netid'"), 0) == '0') {
$remove = 1;
echo("Removed Interface!\n");
}

View File

@ -30,9 +30,9 @@ while ($device = mysql_fetch_row($device_query)) {
if (preg_match('/serial[0-9]:/', $if)) { $nullintf = '1'; }
if (preg_match('/ng[0-9]+$/', $if)) { }
if ($nullintf == 0) {
if(mysql_result(mysql_query("SELECT COUNT(*) FROM `interfaces` WHERE `host` = '$id' AND `ifIndex` = '$ifIndex'"), 0) == '0') {
if(mysql_result(mysql_query("SELECT COUNT(*) FROM `interfaces` WHERE `device_id` = '$id' AND `ifIndex` = '$ifIndex'"), 0) == '0') {
echo "Adding port $ifName \n";
mysql_query("INSERT INTO `interfaces` (`host`,`ifIndex`,`if`) VALUES ('$id','$ifIndex','$ifName')");
mysql_query("INSERT INTO `interfaces` (`device_id`,`ifIndex`,`ifDescr`) VALUES ('$id','$ifIndex','$ifName')");
} else {
# echo("Already have $ifName \n");
}

View File

@ -27,12 +27,12 @@ if($bg == $list_colour_a) { $bg = $list_colour_b; } else { $bg=$list_colour_a; }
echo("<td class=list-bold width=175>");
if($if['id']) {
$if['id'] = $entry['interface'];
$if['if'] = $interface;
if($interface) {
$if['interface_id'] = $entry['interface'];
$if['ifDescr'] = $interface;
echo(generateiflink($if));
}
echo("</td>");
echo("</td>
<td width=20>$icon</td>
<td class=syslog>
" . $entry['message'] . "

View File

@ -2,61 +2,62 @@
# This file prints a table row for each interface
$if_id = $interface['id'];
$inf = fixifName($interface['if']);
$if_id = $interface['interface_id'];
$ifDescr = fixifName($interface['ifDescr']);
$ifIndex = $interface['ifIndex'];
$ifclass = ifclass($interface['up'], $interface['up_admin']);
$ifname = $interface['name'];
$speed = humanspeed($interface['ifSpeed']);
$mac = $interface['ifPhysAddress'];
if($ifname) {$ifname = $ifname . "</br>";}
$ifAlias = $interface['ifAlias'];
$ifSpeed = humanspeed($interface['ifSpeed']);
$ifPhysAddress = $interface['ifPhysAddress'];
$ifType = fixiftype($interface['ifType']);
if($ifAlias) {$ifAlias = $ifAlias . "</br>";}
if($bg == "#ffffff") { $bg = "#e5e5e5"; } else { $bg="#ffffff"; }
$graph_url = "graph.php?if=$if_id&from=$twoday&to=$now&width=400&height=120&type=bits";
echo("<tr style=\"background-color: $bg; padding: 5px;\" valign=top>
<td valign=top width=300>
<span class=list-large><a onmouseover=\"return overlib('<img src=\'$graph_url\'>');\" onmouseout=\"return nd();\"
class='$ifclass' href='?page=interface&id=$interface[id]'>
$i. $inf
</a></span><br /><span class=interface-desc>$ifname</span>");
<span class=list-large>
" . generateiflink($interface, "$i. $ifDescr") . "
</span><br /><span class=interface-desc>$ifAlias</span>");
unset ($break);
$iftype = fixiftype($interface[ifType]);
if(!$dographs) {
$ipdata = mysql_query("SELECT * FROM `ipaddr` WHERE `interface_id` = '$interface[id]'");
$ipdata = mysql_query("SELECT * FROM `ipaddr` WHERE `interface_id` = '$interface[interface_id]'");
while($ip = mysql_fetch_Array($ipdata)) {
echo("$break <a class=interface-desc href=\"javascript:popUp('/netcmd.php?cmd=whois&query=$ip[addr]')\">$ip[addr]/$ip[cidr]</a>");
$break = " ";
}
echo("</span>");
echo("</td><td width=70>");
if($speed && $speed != "") { echo("<span class=box-desc>$speed</span>"); }
if($ifSpeed && $ifSpeed != "") { echo("<span class=box-desc>$ifSpeed</span>"); }
echo("</td><td width=150>");
if($iftype && $iftype != "") { echo("<span class=box-desc>$iftype</span>"); } else { echo("-"); }
if($ifType && $iftype != "") { echo("<span class=box-desc>" . $ifType . "</span>"); } else { echo("-"); }
echo("</td><td width=80>");
if($mac && $mac != "") { echo("<span class=box-desc>$mac</span>"); } else { echo("-"); }
if($interface['ifPhysAddress'] && $interface['ifPhysAddress'] != "") { echo("<span class=box-desc>" . $interface['ifPhysAddress'] . "</span>"); } else { echo("-"); }
echo("</td><td width=80>");
if($interface[ifMtu] && $interface[ifMtu] != "") { echo("<span class=box-desc>MTU $interface[ifMtu]</span>"); } else { echo("-"); }
if($interface['ifMtu'] && $interface['ifMtu'] != "") { echo("<span class=box-desc>MTU " . $interface['ifMtu'] . "</span>"); } else { echo("-"); }
# if($interface[ifDuplex] != unknown) { echo("<span class=box-desc>Duplex $interface[ifDuplex]</span>"); } else { echo("-"); }
# if($interface[ifDuplex] != unknown) { echo("<span class=box-desc>Duplex " . $interface['ifDuplex'] . "</span>"); } else { echo("-"); }
}
echo("</td>");
echo("<td valign=top class=interface-desc>");
if ( strpos($inf, "oopback") === false && !$dographs) {
$link_query = mysql_query("select I.if, D.hostname, D.id AS dev_id, I.id from links AS L, interfaces AS I, devices AS D WHERE L.src_if = '$if_id' AND L.dst_if = I.id AND I.host = D.id");
if ( strpos($ifDescr, "oopback") === false && !$dographs) {
$link_query = mysql_query("select I.ifDescr, D.hostname, D.id, I.interface_id from links AS L, interfaces AS I, devices AS D WHERE L.src_if = '$if_id' AND L.dst_if = I.interface_id AND I.device_id = D.id");
while($link = mysql_fetch_array($link_query)) {
echo("<img src='images/16/connect.png' align=absmiddle alt='Directly Connected' /> " . generateiflink($link) . " on " . generatedevicelink($link) . "</a><br />");
$br = "<br />";
}
unset($br);
$adj_sql = "SELECT * FROM networks AS N, interfaces AS I, adjacencies AS A ";
$adj_sql = $adj_sql . "WHERE I.id = A.interface_id AND A.network_id = N.id ";
$adj_sql = $adj_sql . "AND I.id = '$if_id'";
$adj_sql = $adj_sql . "WHERE I.interface_id = A.interface_id AND A.network_id = N.id ";
$adj_sql = $adj_sql . "AND I.interface_id = '$if_id'";
$adj_query = mysql_query("$adj_sql");
while($adjs = mysql_fetch_array($adj_query)) {
$network_id = $adjs['network_id'];
$newsql = "SELECT *, I.id AS iid, D.id AS did FROM adjacencies AS A, networks as N, interfaces as I, devices as D ";
$newsql = $newsql . "WHERE N.id = '$network_id' AND A.network_id = N.id AND I.id = A.interface_id AND D.id = I.host ";
$newsql = $newsql . "AND D.id != '$device[id]' AND I.if NOT LIKE '%loopback%' GROUP BY D.id ORDER BY D.hostname";
$newsql = "SELECT *, I.interface_id AS iid, D.id AS did FROM adjacencies AS A, networks as N, interfaces as I, devices as D ";
$newsql = $newsql . "WHERE N.id = '$network_id' AND A.network_id = N.id AND I.interface_id = A.interface_id AND D.id = I.device_id ";
$newsql = $newsql . "AND D.id != '$device[id]' AND I.ifDescr NOT LIKE '%loopback%' GROUP BY D.id ORDER BY D.hostname";
$new_query = mysql_query($newsql);
while($new = mysql_fetch_array($new_query)) {
if ($new['status'] == '0') { $class = "red"; } else { $class = "blue"; }
@ -67,7 +68,7 @@ echo("</td>");
$this_ifid = $new['iid'];
$this_hostid = $new['did'];
$this_hostname = $new['hostname'];
$this_ifname = fixifName($new['if']);
$this_ifname = fixifName($new['ifDescr']);
$wq = mysql_query("select count(*) FROM links WHERE dst_if = '$this_ifid' AND src_if = $if_id;");
if (@mysql_result($wq, 0) == '0' && $this_hostname != $hostname) {
$graph_url = "graph.php?if=$this_ifid&from=$twoday&to=$now&width=400&height=120&type=bits";

View File

@ -1,7 +1,7 @@
<?php
$service_alerts = mysql_result(mysql_query("SELECT count(service_id) FROM services WHERE service_status = '0'"),0);
$if_alerts = mysql_result(mysql_query("SELECT count(id) FROM `interfaces` WHERE `up` = 'down' AND `up_admin` = 'up' AND `ignore` = '0'"),0);
$if_alerts = mysql_result(mysql_query("SELECT count(*) FROM `interfaces` WHERE `ifOperStatus` = 'down' AND `ifAdminStatus` = 'up' AND `ignore` = '0'"),0);
$device_alerts = "0";
$device_alert_sql = "WHERE 0";
@ -10,7 +10,7 @@
if($device[status] == 0 && $device[ignore] == '0') { $this_alert = "1"; } elseif($device[ignore] == '0') {
if(mysql_result(mysql_query("SELECT count(service_id) FROM services WHERE service_status = '0' AND service_host = '$device[id]'"),0)) { $this_alert = "1"; }
if(mysql_result(mysql_query("SELECT count(id) FROM interfaces WHERE `up` = 'down' AND `up_admin` = 'up' AND host = '$device[id]'"),0)) { $this_alert = "1"; }
if(mysql_result(mysql_query("SELECT count(*) FROM interfaces WHERE `ifOperStatus` = 'down' AND `ifAdminStatus` = 'up' AND device_id = '$device[id]'"),0)) { $this_alert = "1"; }
}
if($this_alert) {

View File

@ -5,10 +5,10 @@ $devices['up'] = mysql_result(mysql_query("SELECT count(id) FROM devices WHERE
$devices['down'] = mysql_result(mysql_query("SELECT count(id) FROM devices WHERE status = '0' AND `ignore` = '0'"),0);
$devices['disabled'] = mysql_result(mysql_query("SELECT count(id) FROM devices WHERE `ignore` = '1'"),0);
$interfaces['count'] = mysql_result(mysql_query("SELECT count(id) FROM interfaces"),0);
$interfaces['up'] = mysql_result(mysql_query("SELECT count(id) FROM interfaces WHERE up = 'up'"),0);
$interfaces['down'] = mysql_result(mysql_query("SELECT count(id) FROM interfaces WHERE up = 'down' AND up_admin = 'up'"),0);
$interfaces['disabled'] = mysql_result(mysql_query("SELECT count(id) FROM interfaces WHERE up_admin = 'down'"),0);
$interfaces['count'] = mysql_result(mysql_query("SELECT count(*) FROM interfaces"),0);
$interfaces['up'] = mysql_result(mysql_query("SELECT count(*) FROM interfaces WHERE ifOperStatus = 'up'"),0);
$interfaces['down'] = mysql_result(mysql_query("SELECT count(*) FROM interfaces WHERE ifOperStatus = 'down' AND ifAdminStatus = 'up'"),0);
$interfaces['disabled'] = mysql_result(mysql_query("SELECT count(*) FROM interfaces WHERE ifAdminStatus = 'down'"),0);
$services['count'] = mysql_result(mysql_query("SELECT count(service_id) FROM services"),0);
$services['up'] = mysql_result(mysql_query("SELECT count(service_id) FROM services WHERE service_status = '1' AND service_ignore ='0'"),0);

View File

@ -27,7 +27,7 @@ echo("
<img src='images/16/server_lightning.png' align=absmiddle border=0> Overview
</a>
</li>");
if(mysql_result(mysql_query("select count(id) from interfaces WHERE host = '$device[id]'"), 0) > '0') {
if(@mysql_result(mysql_query("select count(interface_id) from interfaces WHERE device_id = '$device[id]'"), 0) > '0') {
echo("
<li class=$select[devifs]>
<a href='?page=device&id=$device[id]&section=dev-ifs' >

View File

@ -4,7 +4,7 @@ $hostname = gethostbyid($_GET[id]);
echo("<div style='margin: 5px;'><table border=0 cellspacing=0 cellpadding=5 width=100%>");
$i = "1";
$interface_query = mysql_query("select * from interfaces WHERE host = '$_GET[id]' ORDER BY 'ifIndex'");
$interface_query = mysql_query("select * from interfaces WHERE device_id = '$_GET[id]' ORDER BY 'ifIndex'");
while($interface = mysql_fetch_array($interface_query)) {
include("includes/print-interface.inc");
}

View File

@ -6,10 +6,10 @@ $id = $_GET[id];
$device = mysql_fetch_array(mysql_query("SELECT * FROM `devices` WHERE id = '$_GET[id]'"));
$interfaces['total'] = mysql_result(mysql_query("SELECT count(id) FROM interfaces WHERE host = '$id'"),0);
$interfaces['up'] = mysql_result(mysql_query("SELECT count(id) FROM interfaces WHERE host = '$id' AND up = 'up'"),0);
$interfaces['down'] = mysql_result(mysql_query("SELECT count(id) FROM interfaces WHERE host = '$id' AND up = 'down' AND up_admin = 'up'"),0);
$interfaces['disabled'] = mysql_result(mysql_query("SELECT count(id) FROM interfaces WHERE host = '$id' AND up_admin = 'down'"),0);
$interfaces['total'] = mysql_result(mysql_query("SELECT count(*) FROM interfaces WHERE device_id = '$id'"),0);
$interfaces['up'] = mysql_result(mysql_query("SELECT count(*) FROM interfaces WHERE device_id = '$id' AND ifOperStatus = 'up'"),0);
$interfaces['down'] = mysql_result(mysql_query("SELECT count(*) FROM interfaces WHERE device_id = '$id' AND ifOperStatus = 'down' AND ifAdminStatus = 'up'"),0);
$interfaces['disabled'] = mysql_result(mysql_query("SELECT count(*) FROM interfaces WHERE device_id = '$id' AND ifAdminStatus = 'down'"),0);
$services['total'] = mysql_result(mysql_query("SELECT count(service_id) FROM services WHERE service_host = '$id'"),0);
$services['up'] = mysql_result(mysql_query("SELECT count(service_id) FROM services WHERE service_host = '$id' AND service_status = '1' AND service_ignore ='0'"),0);
@ -69,7 +69,7 @@ echo("
echo("<div style='margin: 8px; font-size: 11px; font-weight: bold;'>");
$sql = "SELECT * FROM interfaces WHERE host = '$id'";
$sql = "SELECT * FROM interfaces WHERE `device_id` = '$id'";
$query = mysql_query($sql);
while($data = mysql_fetch_array($query)) {
echo("$ifsep" . generateiflink($data, makeshortif(strtolower($data['if']))));

View File

@ -1,6 +1,6 @@
<?php
$sql = "SELECT *, D.id as dev_id, I.id as id FROM `interfaces` AS I, `devices` AS D WHERE I.host = D.id ORDER BY D.hostname, I.if";
$sql = "SELECT * FROM `interfaces` AS I, `devices` AS D WHERE I.device_id = D.id ORDER BY D.hostname, I.ifDescr";
$query = mysql_query($sql);
echo("<table cellspacing=0 cellpadding=2 width=100%>");
@ -9,16 +9,16 @@ echo("<tr class=tablehead><th width=280>Device</a></th><th>Interface</th><th>Spe
$row = 1;
while($iface = mysql_fetch_array($query)) {
while($interface = mysql_fetch_array($query)) {
if(is_integer($row/2)) { $row_colour = $list_colour_a; } else { $row_colour = $list_colour_b; }
$speed = humanspeed($iface['ifSpeed']);
$if_link = generateiflink($iface);
$dev_link = generatedevicelink($iface);
$type = humanmedia($iface['ifType']);
$speed = humanspeed($interface['ifSpeed']);
$if_link = generateiflink($interface);
$dev_link = generatedevicelink($interface);
$type = humanmedia($interface['ifType']);
echo("<tr bgcolor=$row_colour><td><a href='' class=list-bold>$dev_link</a></td><td class=list-bold>$if_link</td><td>$speed</td><td>$type</td><td>$iface[name]</td></tr>\n");
echo("<tr bgcolor=$row_colour><td><a href='' class=list-bold>$dev_link</a></td><td class=list-bold>$if_link</td><td>$speed</td><td>$type</td><td>" . $interface[ifAlias] . "</td></tr>\n");
$row++;

View File

@ -47,13 +47,13 @@ function geteventicon ($message) {
}
function generateiflink($iface, $text=0) {
function generateiflink($interface, $text=0) {
global $twoday;
global $now;
if(!$text) { $text = fixIfName($iface['if']); }
$class = ifclass($iface['up'], $iface['up_admin']);
$graph_url = "graph.php?if=$iface[id]&from=$twoday&to=$now&width=400&height=120&type=bits";
$link = "<a class=$class href='?page=interface&id=$iface[id]' onmouseover=\"return overlib('<img src=\'$graph_url\'>');\" onmouseout=\"return nd();\">$text</a>";
if(!$text) { $text = fixIfName($interface['ifDescr']); }
$class = ifclass($interface['ifOperStatus'], $interface['ifAdminStatus']);
$graph_url = "graph.php?if=" . $interface['interface_id'] . "&from=$twoday&to=$now&width=400&height=120&type=bits";
$link = "<a class=$class href='?page=interface&id=" . $interface[interface_id] . "' onmouseover=\"return overlib('<img src=\'$graph_url\'>');\" onmouseout=\"return nd();\">$text</a>";
return $link;
}
@ -975,19 +975,19 @@ function gethostbyid($id) {
}
function getifhost($id) {
$sql = mysql_query("SELECT `host` from `interfaces` WHERE `id` = '$id'");
$sql = mysql_query("SELECT `device_id` from `interfaces` WHERE `interface_id` = '$id'");
$result = @mysql_result($sql, 0);
return $result;
}
function getifindexbyid($id) {
$sql = mysql_query("SELECT `ifIndex` FROM `interfaces` WHERE `id` = '$id'");
$sql = mysql_query("SELECT `ifIndex` FROM `interfaces` WHERE `interface_id` = '$id'");
$result = @mysql_result($sql, 0);
return $result;
}
function getifbyid($id) {
$sql = mysql_query("SELECT `if` FROM `interfaces` WHERE `id` = '$id'");
$sql = mysql_query("SELECT `ifDescr` FROM `interfaces` WHERE `interface_id` = '$id'");
$result = @mysql_result($sql, 0);
return $result;
}

View File

@ -52,7 +52,7 @@ function graph_device_bits ($device, $graph, $from, $to, $width, $height)
$hostname = gethostbyid($device);
$query = mysql_query("SELECT `ifIndex` FROM `interfaces` WHERE `host` = '$device' AND `ifType` NOT LIKE '%oopback%' AND `ifType` NOT LIKE '%SVI%'");
$query = mysql_query("SELECT `ifIndex` FROM `interfaces` WHERE `device_id` = '$device' AND `ifType` NOT LIKE '%oopback%' AND `ifType` NOT LIKE '%SVI%'");
while($int = mysql_fetch_row($query)) {

View File

@ -10,7 +10,7 @@ while ($device = mysql_fetch_array($q)) {
$hostid = $device['id'];
$community = $device['community'];
echo("$hostname\n");
$oids = `snmpwalk -v2c -Osq -c $community $hostname ipAdEntIfIndex | sed s/ipAdEntIfIndex.//g`;
$oids = `snmpbulkwalk -v2c -Osq -c $community $hostname ipAdEntIfIndex | sed s/ipAdEntIfIndex.//g`;
$oids = trim($oids);
foreach(explode("\n", $oids) as $data) {
$data = trim($data);
@ -22,8 +22,8 @@ while ($device = mysql_fetch_array($q)) {
list($net,$cidr) = explode("/", $network);
$cidr = trim($cidr);
if($mask == "255.255.255.255") { $cidr = "32"; $network = "$address/$cidr"; }
if (mysql_result(mysql_query("SELECT count(id) FROM `interfaces` WHERE host = '$hostid' AND `ifIndex` = '$ifIndex'"), 0) != '0') {
$i_query = "SELECT id FROM `interfaces` WHERE host = '$hostid' AND `ifIndex` = '$ifIndex'";
if (mysql_result(mysql_query("SELECT count(*) FROM `interfaces` WHERE device_id = '$hostid' AND `ifIndex` = '$ifIndex'"), 0) != '0') {
$i_query = "SELECT interface_id FROM `interfaces` WHERE device_id = '$hostid' AND `ifIndex` = '$ifIndex'";
$interface_id = mysql_result(mysql_query($i_query), 0);
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `ipaddr` WHERE `addr` = '$address' AND `cidr` = '$cidr' AND `interface_id` = '$interface_id'"), 0) == '0') {
mysql_query("INSERT INTO `ipaddr` (`addr`, `cidr`, `network`, `interface_id`) VALUES ('$address', '$cidr', '$net', '$interface_id')");
@ -38,7 +38,6 @@ while ($device = mysql_fetch_array($q)) {
mysql_query("INSERT INTO `adjacencies` (`network_id`, `interface_id`) VALUES ('$network_id', '$interface_id')");
echo("Create Adjacency : $hostname, $interface_id, $network_id, $network, $ifIndex\n");
}
} else { }
}
}

View File

@ -4,33 +4,24 @@
include("config.php");
include("includes/functions.php");
$interface_query = mysql_query("SELECT *, I.id AS sqlid FROM `interfaces` AS I, `devices` AS D where I.host = D.id AND D.id LIKE '%" . $argv[1]. "' AND D.status = '1'");
$interface_query = mysql_query("SELECT * FROM `interfaces`");
while ($interface = mysql_fetch_array($interface_query)) {
$hostname = $interface['hostname'];
$host = $interface['host'];
$old_if = $interface['if'];
$ifIndex = $interface['ifIndex'];
$old_alias = $interface['name'];
$id = $interface['sqlid'];
$old_up = $interface['up'];
$old_speed = $interface['ifSpeed'];
$old_duplex = $interface['ifDuplex'];
$old_physaddress = $interface['ifPhysAddress'];
$old_type = $interface['ifType'];
$old_mtu = $interface['ifMtu'];
$old_up_admin = $interface['up_admin'];
$community = $interface['community'];
$os = $interface['os'];
$snmp_cmd = "snmpget -O qv -v2c -c $community $hostname ifName.$ifIndex ifDescr.$ifIndex ifAdminStatus.$ifIndex ifOperStatus.$ifIndex ";
$snmp_cmd .= "ifAlias.$ifIndex ifSpeed.$ifIndex 1.3.6.1.2.1.10.7.2.1.$ifIndex ifType.$ifIndex ifMtu.$ifIndex ifPhysAddress.$ifIndex";
$snmp_output = `$snmp_cmd`;
$snmp_output = trim($snmp_output);
$device = mysql_fetch_array(mysql_query("SELECT * FROM `devices` WHERE id = '" . $interface['device_id'] . "'"));
if($device['status'] == '1') {
$snmp_cmd = "snmpget -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'] . " ifName." . $interface['ifIndex'];
$snmp_cmd .= " ifDescr." . $interface['ifIndex'] . " ifAdminStatus." . $interface['ifIndex'] . " ifOperStatus." . $interface['ifIndex'] . " ";
$snmp_cmd .= "ifAlias." . $interface['ifIndex'] . " ifSpeed." . $interface['ifIndex'] . " 1.3.6.1.2.1.10.7.2.1." . $interface['ifIndex'];
$snmp_cmd .= " ifType." . $interface['ifIndex'] . " ifMtu." . $interface['ifIndex'] . " ifPhysAddress." . $interface['ifIndex'];
echo($snmp_cmd);
$snmp_output = trim(`$snmp_cmd`);
$snmp_output = str_replace("No Such Object available on this agent at this OID", "", $snmp_output);
$snmp_output = str_replace("No Such Instance currently exists at this OID", "", $snmp_output);
$ifPhysAddress = strtolower(str_replace("\"", "", $ifPhysAddress));
$ifPhysAddress = str_replace(" ", ":", $ifPhysAddress);
echo("Looking at $old_if on $hostname \n");
echo("Looking at " . $interface['ifDescr'] . " on " . $device['hostname'] . "\n");
list($ifName, $ifDescr, $ifAdminStatus, $ifOperStatus, $ifAlias, $ifSpeed, $ifDuplex, $ifType, $ifMtu, $ifPhysAddress) = explode("\n", $snmp_output);
$ifDescr = trim(str_replace("\"", "", $ifDescr));
if ($ifDuplex == 3) { $ifDuplex = "half"; } elseif ($ifDuplex == 2) { $ifDuplex = "full"; } else { $ifDuplex = "unknown"; }
@ -38,10 +29,16 @@ while ($interface = mysql_fetch_array($interface_query)) {
if ($ifAlias == " ") { $ifAlias = str_replace(" ", "", $ifAlias); }
$ifAlias = trim(str_replace("\"", "", $ifAlias));
$ifAlias = trim($ifAlias);
if($interface['os'] == "IOS") { $ifType = trim(str_replace("\"", "", `snmpget -O qv -v2c -c $community $hostname 1.3.6.1.4.1.9.2.2.1.1.1.$ifIndex`)); }
$ifPhysAddress = strtolower(str_replace("\"", "", $ifPhysAddress));
$ifPhysAddress = str_replace(" ", ":", $ifPhysAddress);
$rrdfile = "rrd/" . $hostname . ".". $ifIndex . ".rrd";
if($device['os'] == "IOS") {
$locIfHardType_cmd = "snmpget -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'] . " 1.3.6.1.4.1.9.2.2.1.1.1." . $interface['ifIndex'];
$locIfHardType = trim(str_replace("\"", "", `$locIfHardType_cmd`));
}
$rrdfile = "rrd/" . $device['hostname'] . "." . $interface['ifIndex'] . ".rrd";
if(!is_file($rrdfile)) {
$woo = `rrdtool create $rrdfile \
DS:INOCTETS:COUNTER:600:U:100000000000 \
@ -66,84 +63,94 @@ while ($interface = mysql_fetch_array($interface_query)) {
unset($update_query);
unset($seperator);
if ( $old_if != $ifDescr && $ifDescr != "" ) {
if ( $interface['ifDescr'] != $ifDescr && $ifDescr != "" ) {
$update = "`if` = '$ifDescr'";
$seperator = ", ";
mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Name -> $ifDescr')");
mysql_query("INSERT INTO eventlog (`host`, `interface`, `datetime`, `message`) VALUES ('" . $interface['device_id'] . "', '" . $interface['interface_id'] . "', NOW(), 'Name -> " . $ifDescr . "')");
}
if ( $old_alias != $ifAlias ) {
$update .= $seperator . "`name` = \"$ifAlias\"";
if ( $interface['ifAlias'] != $ifAlias ) {
$update .= $seperator . "`name` = '$ifAlias'";
$seperator = ", ";
mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Desc -> $ifAlias')");
mysql_query("INSERT INTO eventlog (`host`, `interface`, `datetime`, `message`) VALUES ('" . $interface['device_id'] . "', '" . $interface['interface_id'] . "', NOW(), 'Desc -> $ifAlias')");
}
if ( $old_up != $ifOperStatus && $ifOperStatus != "" ) {
if ( $interface['ifOperStatus'] != $ifOperStatus && $ifOperStatus != "" ) {
$update .= $seperator . "`up` = '$ifOperStatus'";
$seperator = ", ";
mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Interface went $ifOperStatus')");
mysql_query("INSERT INTO eventlog (`host`, `interface`, `datetime`, `message`) VALUES ('" . $interface['device_id'] . "', '" . $interface['interface_id'] . "', NOW(), 'Interface went $ifOperStatus')");
}
if ( $old_up_admin != $ifAdminStatus && $ifAdminStatus != "" ) {
if ( $interface['ifAdminStatus'] != $ifAdminStatus && $ifAdminStatus != "" ) {
$update .= $seperator . "`up_admin` = '$ifAdminStatus'";
$seperator = ", ";
if($ifAdminStatus == "up") { $admin = "enabled"; } else { $admin = "disabled"; }
mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Interface $admin')");
mysql_query("INSERT INTO eventlog (`host`, `interface`, `datetime`, `message`) VALUES ('" . $interface['device_id'] . "', '" . $interface['interface_id'] . "', NOW(), 'Interface $admin')");
}
if ( $old_duplex != $ifDuplex && $ifDuplex != "" ) {
if ( $interface['ifDuplex'] != $ifDuplex && $ifDuplex != "" ) {
$update .= $seperator . "`ifDuplex` = '$ifDuplex'";
$seperator = ", ";
mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Duplex -> $ifDuplex')");
mysql_query("INSERT INTO eventlog (`host`, `interface`, `datetime`, `message`) VALUES ('" . $interface['device_id'] . "', '" . $interface['interface_id'] . "', NOW(), 'Duplex -> $ifDuplex')");
}
if ( $old_type != $ifType && $ifType != "" ) {
if ( $interface['ifType'] != $ifType && $ifType != "" ) {
$update .= $seperator . "`ifType` = '$ifType'";
$seperator = ", ";
mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Type -> $ifType')");
mysql_query("INSERT INTO eventlog (`host`, `interface`, `datetime`, `message`) VALUES ('" . $interface['device_id'] . "', '" . $interface['interface_id'] . "', NOW(), 'Type -> $ifType')");
}
if ( $old_mtu != $ifMtu && $ifMtu != "" ) {
if ( $interface['ifMtu'] != $ifMtu && $ifMtu != "" ) {
$update .= $seperator . "`ifMtu` = '$ifMtu'";
$seperator = ", ";
mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'MTU -> $ifMtu')");
mysql_query("INSERT INTO eventlog (`host`, `interface`, `datetime`, `message`) VALUES ('" . $interface['device_id'] . "', '" . $interface['interface_id'] . "', NOW(), 'MTU -> $ifMtu')");
}
if ( $old_physaddress != $ifPhysAddress && $ifPhysAddress != "" ) {
if ( $interface['ifPhysAddress'] != $ifPhysAddress && $ifPhysAddress != "" ) {
$update .= $seperator . "`ifPhysAddress` = '$ifPhysAddress'";
$seperator = ", ";
mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'MAC -> $ifPhysAddress')");
mysql_query("INSERT INTO eventlog (`host`, `interface`, `datetime`, `message`) VALUES ('" . $interface['device_id'] . "', '" . $interface['interface_id'] . "', NOW(), 'MAC -> $ifPhysAddress')");
}
if ( $old_speed != $ifSpeed && $ifSpeed != "" ) {
if ( $interface['ifSpeed'] != $ifSpeed && $ifSpeed != "" ) {
$update .= $seperator . "`ifSpeed` = '$ifSpeed'";
$seperator = ", ";
$prev = humanspeed($old_speed);
$prev = humanspeed($interface['ifSpeed']);
$now = humanspeed($ifSpeed);
mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Speed -> $now')");
mysql_query("INSERT INTO eventlog (`host`, `interface`, `datetime`, `message`) VALUES ('" . $interface['device_id'] . "', '" . $interface['interface_id'] . "', NOW(), 'Speed -> $now')");
}
if ($update) {
$update_query = "UPDATE `interfaces` SET ";
$update_query .= $update;
$update_query .= " WHERE `id` = '$id'";
echo("Updating : $hostname $ifDescr\n$update_query\n\n");
$update_query .= " WHERE `id` = '" . $interface['interface_id'] . "'";
echo("Updating : " . $device['hostname'] . " $ifDescr\nSQL :$update_query\n\n");
$update_result = mysql_query($update_query);
} else {
echo("Not Updating : $hostname $ifDescr ( $old_if )\n\n");
echo("Not Updating : " . $device['hostname'] ." $ifDescr ( " . $interface['ifDescr'] . " )\n\n");
}
if($ifOperStatus == "up") {
$snmp_data = `snmpget -O qv -v2c -c $community $hostname ifHCInOctets.$ifIndex ifHCOutOctets.$ifIndex ifInErrors.$ifIndex ifOutErrors.$ifIndex \
ifInUcastPkts.$ifIndex ifOutUcastPkts.$ifIndex ifInNUcastPkts.$ifIndex ifOutNUcastPkts.$ifIndex`;
$snmp_data_cmd = "snmpget -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'];
$snmp_data_cmd .= " ifHCInOctets." . $interface['ifIndex'] . " ifHCOutOctets." . $interface['ifIndex'] . " ifInErrors." . $interface['ifIndex'];
$snmp_data_cmd .= " ifOutErrors." . $interface['ifIndex'] . " ifInUcastPkts." . $interface['ifIndex'] . " ifOutUcastPkts." . $interface['ifIndex'];
$snmp_data_cmd .= " ifInNUcastPkts." . $interface['ifIndex'] . " ifOutNUcastPkts." . $interface['ifIndex'];
$snmp_data = `$snmp_data_cmd`;
$snmp_data = str_replace("Wrong Type (should be Counter32): ","", $snmp_data);
$snmp_data = str_replace("No Such Instance currently exists at this OID","", $snmp_data);
list($ifHCInOctets, $ifHCOutOctets, $ifInErrors, $ifOutErrors, $ifInUcastPkts, $ifOutUcastPkts, $ifInNUcastPkts, $ifOutNUcastPkts) = explode("\n", $snmp_data);
if($ifHCInOctets == "" || strpos($ifHCInOctets, "No") !== FALSE ) {
$fixit = `snmpget -O qv -v2c -c $community $hostname ifInOctets.$ifIndex ifOutOctets.$ifIndex`;
list ($ifHCInOctets, $ifHCOutOctets) = explode("\n", $fixit);
$octets_cmd = "snmpget -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'];
$octets_cmd .= " ifInOctets." . $interface['ifIndex'] . " ifOutOctets." . $interface['ifIndex'];
$octets = `$octets_cmd`;
list ($ifHCInOctets, $ifHCOutOctets) = explode("\n", $octets);
}
$woo = "N:$ifHCInOctets:$ifHCOutOctets:$ifInErrors:$ifOutErrors:$ifInUcastPkts:$ifOutUcastPkts:$ifInNUcastPkts:$ifOutNUcastPkts";
$ret = rrd_update("$rrdfile", $woo);
} else {
echo("Interface $hostname $old_if is down\n");
echo("Interface " . $device['hostname'] . " " . $interface['ifDescr'] . " is down\n");
}
}
}
mysql_query("UPDATE interfaces set ifPhysAddress = '' WHERE ifPhysAddress = 'No Such Instance currently exists at this OID'");
?>