2008-03-12 17:12:17 +00:00
< ? php
2015-04-17 14:59:47 -04:00
if ( $config [ 'enable_inventory' ]) {
2009-11-10 19:28:24 +00:00
2015-04-17 14:59:47 -04:00
echo ( " Physical Inventory : " );
2008-03-12 17:12:17 +00:00
2015-04-17 14:59:47 -04:00
echo ( " \n Caching OIDs: " );
2008-03-12 17:12:17 +00:00
2015-04-17 14:59:47 -04:00
if ( $device [ 'os' ] == 'junos' ) {
2015-02-16 12:08:26 -07:00
2015-04-17 14:59:47 -04:00
$entity_array = array ();
echo ( " jnxBoxAnatomy " );
$entity_array = snmpwalk_cache_oid ( $device , " jnxBoxAnatomy " , $entity_array , " JUNIPER-MIB " );
} else {
2009-11-10 19:28:24 +00:00
2015-04-17 14:59:47 -04:00
$entity_array = array ();
echo ( " entPhysicalEntry " );
$entity_array = snmpwalk_cache_oid ( $device , " entPhysicalEntry " , $entity_array , " ENTITY-MIB:CISCO-ENTITY-VENDORTYPE-OID-MIB " );
echo ( " entAliasMappingIdentifier " );
$entity_array = snmpwalk_cache_twopart_oid ( $device , " entAliasMappingIdentifier " , $entity_array , " ENTITY-MIB:IF-MIB " );
2009-05-06 16:50:51 +00:00
}
2008-03-12 17:12:17 +00:00
2015-04-17 14:59:47 -04:00
foreach ( $entity_array as $entPhysicalIndex => $entry ) {
if ( $device [ 'os' ] == 'junos' ) {
// Juniper's MIB doesn't have the same objects as the Entity MIB, so some values
// are made up here.
$entPhysicalDescr = $entry [ 'jnxContentsDescr' ];
$entPhysicalContainedIn = $entry [ 'jnxContainersWithin' ];
$entPhysicalClass = $entry [ 'jnxBoxClass' ];
$entPhysicalName = $entry [ 'jnxOperatingDescr' ];
$entPhysicalSerialNum = $entry [ 'jnxContentsSerialNo' ];
$entPhysicalModelName = $entry [ 'jnxContentsPartNo' ];
$entPhysicalMfgName = 'Juniper' ;
$entPhysicalVendorType = 'Juniper' ;
$entPhysicalParentRelPos = - 1 ;
$entPhysicalHardwareRev = $entry [ 'jnxContentsRevision' ];
$entPhysicalFirmwareRev = $entry [ 'entPhysicalFirmwareRev' ];
$entPhysicalSoftwareRev = $entry [ 'entPhysicalSoftwareRev' ];
$entPhysicalIsFRU = $entry [ 'jnxFruType' ];
$entPhysicalAlias = $entry [ 'entPhysicalAlias' ];
$entPhysicalAssetID = $entry [ 'entPhysicalAssetID' ];
} else {
$entPhysicalDescr = $entry [ 'entPhysicalDescr' ];
$entPhysicalContainedIn = $entry [ 'entPhysicalContainedIn' ];
$entPhysicalClass = $entry [ 'entPhysicalClass' ];
$entPhysicalName = $entry [ 'entPhysicalName' ];
$entPhysicalSerialNum = $entry [ 'entPhysicalSerialNum' ];
$entPhysicalModelName = $entry [ 'entPhysicalModelName' ];
$entPhysicalMfgName = $entry [ 'entPhysicalMfgName' ];
$entPhysicalVendorType = $entry [ 'entPhysicalVendorType' ];
$entPhysicalParentRelPos = $entry [ 'entPhysicalParentRelPos' ];
$entPhysicalHardwareRev = $entry [ 'entPhysicalHardwareRev' ];
$entPhysicalFirmwareRev = $entry [ 'entPhysicalFirmwareRev' ];
$entPhysicalSoftwareRev = $entry [ 'entPhysicalSoftwareRev' ];
$entPhysicalIsFRU = $entry [ 'entPhysicalIsFRU' ];
$entPhysicalAlias = $entry [ 'entPhysicalAlias' ];
$entPhysicalAssetID = $entry [ 'entPhysicalAssetID' ];
}
if ( isset ( $entity_array [ $entPhysicalIndex ][ '0' ][ 'entAliasMappingIdentifier' ])) {
$ifIndex = $entity_array [ $entPhysicalIndex ][ '0' ][ 'entAliasMappingIdentifier' ];
}
if ( ! strpos ( $ifIndex , " fIndex " ) || $ifIndex == " " ) {
unset ( $ifIndex );
} else {
$ifIndex_array = explode ( " . " , $ifIndex );
$ifIndex = $ifIndex_array [ 1 ];
}
if ( $entPhysicalVendorTypes [ $entPhysicalVendorType ] && ! $entPhysicalModelName ) {
$entPhysicalModelName = $entPhysicalVendorTypes [ $entPhysicalVendorType ];
}
// FIXME - dbFacile
if ( $entPhysicalDescr || $entPhysicalName ) {
$entPhysical_id = dbFetchCell ( " SELECT entPhysical_id FROM `entPhysical` WHERE device_id = ? AND entPhysicalIndex = ? " , array ( $device [ 'device_id' ], $entPhysicalIndex ));
if ( $entPhysical_id ) {
$update_data = array (
'entPhysicalIndex' => $entPhysicalIndex ,
'entPhysicalDescr' => $entPhysicalDescr ,
'entPhysicalClass' => $entPhysicalClass ,
'entPhysicalName' => $entPhysicalName ,
'entPhysicalModelName' => $entPhysicalModelName ,
'entPhysicalSerialNum' => $entPhysicalSerialNum ,
'entPhysicalContainedIn' => $entPhysicalContainedIn ,
'entPhysicalMfgName' => $entPhysicalMfgName ,
'entPhysicalParentRelPos' => $entPhysicalParentRelPos ,
'entPhysicalVendorType' => $entPhysicalVendorType ,
'entPhysicalHardwareRev' => $entPhysicalHardwareRev ,
'entPhysicalFirmwareRev' => $entPhysicalFirmwareRev ,
'entPhysicalSoftwareRev' => $entPhysicalSoftwareRev ,
'entPhysicalIsFRU' => $entPhysicalIsFRU ,
'entPhysicalAlias' => $entPhysicalAlias ,
'entPhysicalAssetID' => $entPhysicalAssetID
);
dbUpdate ( $update_data , 'entPhysical' , 'device_id=? AND entPhysicalIndex=?' , array ( $device [ 'device_id' ], $entPhysicalIndex ));
echo ( " . " );
} else {
$insert_data = array (
'device_id' => $device [ 'device_id' ],
'entPhysicalIndex' => $entPhysicalIndex ,
'entPhysicalDescr' => $entPhysicalDescr ,
'entPhysicalClass' => $entPhysicalClass ,
'entPhysicalName' => $entPhysicalName ,
'entPhysicalModelName' => $entPhysicalModelName ,
'entPhysicalSerialNum' => $entPhysicalSerialNum ,
'entPhysicalContainedIn' => $entPhysicalContainedIn ,
'entPhysicalMfgName' => $entPhysicalMfgName ,
'entPhysicalParentRelPos' => $entPhysicalParentRelPos ,
'entPhysicalVendorType' => $entPhysicalVendorType ,
'entPhysicalHardwareRev' => $entPhysicalHardwareRev ,
'entPhysicalFirmwareRev' => $entPhysicalFirmwareRev ,
'entPhysicalSoftwareRev' => $entPhysicalSoftwareRev ,
'entPhysicalIsFRU' => $entPhysicalIsFRU ,
'entPhysicalAlias' => $entPhysicalAlias ,
'entPhysicalAssetID' => $entPhysicalAssetID
);
if ( ! empty ( $ifIndex )) {
$insert_data [ 'ifIndex' ] = $ifIndex ;
}
dbInsert ( $insert_data , 'entPhysical' );
echo ( " + " );
}
if ( $device [ 'os' ] == 'junos' ) {
// $entPhysicalIndex appears as a numeric OID fragment
// (string), so convert it to an "integer" for the
// validation step below since it is stored in the DB as
// an integer. This should be fixed.
list ( $first , $second ) = explode ( " . " , $entPhysicalIndex );
$entPhysicalIndexNoDots = $first . $second ;
$valid [ $entPhysicalIndexNoDots ] = 1 ;
} else {
$valid [ $entPhysicalIndex ] = 1 ;
}
}
}
} else { echo ( " Disabled! " ); }
2009-01-09 15:00:17 +00:00
2015-04-17 14:59:47 -04:00
$sql = " SELECT * FROM `entPhysical` WHERE `device_id` = ' " . $device [ 'device_id' ] . " ' " ;
foreach ( dbFetchRows ( $sql ) as $test ) {
2009-05-11 13:43:59 +00:00
$id = $test [ 'entPhysicalIndex' ];
2011-03-15 11:39:50 +00:00
if ( ! $valid [ $id ]) {
2015-04-17 14:59:47 -04:00
echo ( " - " );
dbDelete ( 'entPhysical' , 'entPhysical_id = ?' , array ( $test [ 'entPhysical_id' ]));
2009-05-06 16:50:51 +00:00
}
2015-04-17 14:59:47 -04:00
}
2008-03-12 17:12:17 +00:00
2015-04-17 14:59:47 -04:00
echo ( " \n " );
2008-03-12 17:12:17 +00:00
?>