2007-04-03 14:10:23 +00:00
#!/usr/bin/php
### Clean up the database removing old IPs and links
< ?
include ( " config.php " );
include ( " includes/functions.php " );
$query = " SELECT *,A.id as id FROM ipaddr AS A, interfaces as I, devices as D
2007-04-07 21:15:23 +00:00
WHERE A . interface_id = I . interface_id AND I . device_id = D . id AND D . status = '1' " ;
2007-04-03 14:10:23 +00:00
$data = mysql_query ( $query );
while ( $row = mysql_fetch_array ( $data )) {
$mask = trim ( `$ipcalc $row[addr]/$row[cidr] | grep Netmask: | cut -d " " -f 4` );
$response = trim ( `snmpget -v2c -Osq -c $row[community] $row[hostname] ipAdEntIfIndex.$row[addr] | cut -d " " -f 2` );
$maskcheck = trim ( `snmpget -v2c -Osq -c $row[community] $row[hostname] ipAdEntNetMask.$row[addr] | cut -d " " -f 2` );
if ( $response == $row [ 'ifIndex' ] && $mask == $maskcheck ) {
} else {
mysql_query ( " delete from ipaddr where id = ' $row[id] ' " );
echo ( " Deleted $row[addr] from $row[hostname] \n " );
}
}
2007-04-07 21:15:23 +00:00
$query = " SELECT * FROM interfaces AS I, devices as D
2007-04-03 14:10:23 +00:00
WHERE I . host = D . id AND D . status = '1' " ;
$data = mysql_query ( $query );
while ( $row = mysql_fetch_array ( $data )) {
$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 ) {
2007-04-07 21:15:23 +00:00
mysql_query ( " delete from interfaces where id = ' " . $row [ 'interface_id' ] . " ' " );
echo ( " Deleted $row[ifDescr] from $hostname\n " );
2007-04-03 14:10:23 +00:00
}
}
echo ( mysql_result ( mysql_query ( " SELECT COUNT(*) FROM `interfaces` " ), 0 ) . " interfaces at start \n " );
2007-04-07 21:15:23 +00:00
$interface_query = mysql_query ( " SELECT interface_id,device_id FROM `interfaces` " );
2007-04-03 14:10:23 +00:00
while ( $interface = mysql_fetch_array ( $interface_query )) {
2007-04-07 21:15:23 +00:00
$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 " );
2007-04-03 14:10:23 +00:00
}
}
echo ( mysql_result ( mysql_query ( " SELECT COUNT(*) FROM `interfaces` " ), 0 ) . " interfaces at end \n " );
echo ( mysql_result ( mysql_query ( " SELECT COUNT(id) FROM `links` " ), 0 ) . " links at start \n " );
$link_query = mysql_query ( " SELECT id,src_if,dst_if FROM `links` " );
while ( $link = mysql_fetch_array ( $link_query )) {
$id = $link [ 'id' ];
$src = $link [ 'src_if' ];
$dst = $link [ 'dst_if' ];
2007-04-07 21:15:23 +00:00
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' ) {
2007-04-03 14:10:23 +00:00
mysql_query ( " delete from links where `id` = ' $id ' " );
echo ( " Deleting link $id \n " );
}
}
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 " );
2007-04-07 21:15:23 +00:00
$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; " );
2007-04-03 14:10:23 +00:00
while ( $link = mysql_fetch_array ( $link_query )) {
$id = $link [ 'adj_id' ];
$netid = $link [ 'network_id' ];
$ifid = $link [ 'interface_id' ];
2007-04-07 21:15:23 +00:00
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' ) {
2007-04-03 18:26:21 +00:00
$remove = 1 ;
echo ( " Removed Interface! \n " );
}
echo ( $link [ 'if' ] . " ( " . $link [ 'interface_id' ] . " ) -> " . $link [ 'cidr' ] . " \n " );
2007-04-03 18:12:55 +00:00
2007-04-03 18:26:21 +00:00
$q = mysql_query ( " SELECT * FROM `ipaddr` WHERE `interface_id` = ' " . $link [ 'interface_id' ] . " ' " );
2007-04-03 18:12:55 +00:00
2007-04-03 18:26:21 +00:00
if ( $link [ 'cidr' ] == " " ) { $remove = 1 ; echo ( " Broken CIDR entry! " ); }
if ( $remove ) {
mysql_query ( " delete from adjacencies where `adj_id` = ' $id ' " );
echo ( " Deleting link $id \n " );
2007-04-03 14:10:23 +00:00
}
2007-04-03 18:26:21 +00:00
unset ( $remove );
2007-04-03 14:10:23 +00:00
}
echo ( mysql_result ( mysql_query ( " SELECT COUNT(adj_id) FROM `adjacencies` " ), 0 ) . " adjacencies at end \n " );
2007-04-03 18:12:55 +00:00
2007-04-03 14:10:23 +00:00
?>