Open-AudIT
https://www.open-audit.org/phpBB3/

Audit Harddrive SMART.
https://www.open-audit.org/phpBB3/viewtopic.php?f=5&t=2638
Page 1 of 1

Author:  nelio.fertado [ Sat Feb 16, 2008 2:42 am ]
Post subject:  Audit Harddrive SMART.

To add SMART Harddrive audit you need to change some lines in the audit.vbs, system_viewdef_hardware.php, admin_pc_add_2.php and if you want on the sql script open_audit.sql. The Hard Drive SMART attribute is called hard_drive_status (refer to hdd smart status)

Audit.vbs Changes

[code]
'''''''''''''''''''''''''''
' H.Drive Information '
'''''''''''''''''''''''''''
comment = "Hard Disk Info"
if verbose = "y" then
wscript.echo comment
end if
On Error Resume Next
Set colItems = objWMIService.ExecQuery("Select * from Win32_DiskDrive",,48)
For Each objItem in colItems
form_input = "harddrive^^^" _
& clean(objItem.Caption) & "^^^" & clean(objItem.Index) & "^^^" & clean(objItem.InterfaceType) & "^^^" _
& clean(objItem.Manufacturer) & "^^^" & clean(objItem.Model) & "^^^" & clean(objItem.Partitions) & "^^^" _
& clean(objItem.SCSIBus) & "^^^" & clean(objItem.SCSILogicalUnit) & "^^^" & clean(objItem.SCSIPort) & "^^^" _
& clean(int(objItem.Size /1024 /1024)) & "^^^" & clean(objItem.Status) & "^^^" & clean(objItem.PNPDeviceID)
entry form_input,comment,objTextFile,oAdd,oComment
form_input = ""
if online = "p" then
oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>Hard Drive Type: </td><td>" & clean(objItem.InterfaceType) & "</td></tr>"
oIE.document.WriteLn "<tr><td>Hard Drive Size: </td><td>" & clean(int(objItem.Size /1024 /1024)) & " mb</td></tr>"
oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>Hard Drive Model: </td><td>" & clean(objItem.Model) & "</td></tr>"
oIE.document.WriteLn "<tr><td>Hard Drive Partitions: </td><td>" & clean(objItem.Partitions) & "</td></tr>"
oIE.document.WriteLn "<tr bgcolor=""#F1F1F1""><td>Hard Drive Status: </td><td>" & clean(objItem.Status) & "</td></tr>"
end if
Next
[/code]

system_viewdef_hardware.php Changes

[code]
"hard_drive"=>array(
"headline"=>__("Fixed Disks"),
"sql"=>"SELECT hard_drive_index, hard_drive_manufacturer, hard_drive_interface_type, hard_drive_model, hard_drive_partitions, hard_drive_size, hard_drive_status, hard_drive_scsi_bus, hard_drive_scsi_logical_unit, hard_drive_scsi_port
FROM hard_drive, system
WHERE hard_drive_uuid=system_uuid AND hard_drive_uuid = '" . $_GET["pc"] . "' AND hard_drive_timestamp = '".$GLOBAL["system_timestamp"]."' ORDER BY hard_drive_index",
"image"=>"images/harddisk_l.png",
"fields"=>array("10"=>array("name"=>"hard_drive_index", "head"=>__("Index"),),
"20"=>array("name"=>"hard_drive_manufacturer", "head"=>__("Manufacturer"),),
"30"=>array("name"=>"hard_drive_interface_type", "head"=>__("Type"),),
"40"=>array("name"=>"hard_drive_model", "head"=>__("Model"),),
"50"=>array("name"=>"hard_drive_partitions", "head"=>__("Partitions"),),
"60"=>array("name"=>"hard_drive_size", "head"=>__("Size"),),
"70"=>array("name"=>"hard_drive_status", "head"=>__("Status"),),
"80"=>array("name"=>"hard_drive_scsi_bus", "head"=>__("SCSI Bus"),),
"90"=>array("name"=>"hard_drive_scsi_logical_unit", "head"=>__("SCSI Logical Unit"),),
"100"=>array("name"=>"hard_drive_scsi_port", "head"=>__("SCSI Port"),),
),
),
[/code]

admin_pc_add_2.php Changes

[code]
function insert_harddrive ($split){
global $timestamp, $uuid, $verbose, $hard_drive_timestamp;
if ($verbose == "y"){echo "<h2>Hard Drive</h2><br />";}
$extended = explode('^^^',$split);
$hard_drive_caption = trim($extended[1]);
$hard_drive_index = trim($extended[2]);
$hard_drive_interface_type = trim($extended[3]);
$hard_drive_manufacturer = trim($extended[4]);
$hard_drive_model = trim($extended[5]);
$hard_drive_partitions = trim($extended[6]);
$hard_drive_scsi_bus = trim($extended[7]);
$hard_drive_scsi_logical_unit = trim($extended[8]);
$hard_drive_scsi_port = trim($extended[9]);
$hard_drive_size = trim($extended[10]);
$hard_drive_status = trim($extended[11]);
$hard_drive_pnpid = trim($extended[12]);
if (is_null($hard_drive_timestamp)){
$sql = "SELECT MAX(hard_drive_timestamp) FROM hard_drive WHERE hard_drive_uuid = '$uuid'";
if ($verbose == "y"){echo $sql . "<br />\n\n";}
$result = mysql_query($sql) or die ('Insert Failed: ' . mysql_error() . '<br />' . $sql);
$myrow = mysql_fetch_array($result);
if ($myrow["MAX(hard_drive_timestamp)"]) {$hard_drive_timestamp = $myrow["MAX(hard_drive_timestamp)"];} else {$hard_drive_timestamp = "";}
} else {}
$sql = "SELECT count(hard_drive_uuid) AS count FROM hard_drive WHERE hard_drive_uuid = '$uuid' AND hard_drive_caption = '$hard_drive_caption' AND ";
$sql .= "hard_drive_index = '$hard_drive_index' AND hard_drive_interface_type = '$hard_drive_interface_type' AND ";
$sql .= "hard_drive_manufacturer = '$hard_drive_manufacturer' AND hard_drive_model = '$hard_drive_model' AND ";
$sql .= "hard_drive_partitions = '$hard_drive_partitions' AND hard_drive_scsi_bus = '$hard_drive_scsi_bus' AND ";
$sql .= "hard_drive_scsi_logical_unit = '$hard_drive_scsi_logical_unit' AND hard_drive_scsi_port = '$hard_drive_scsi_port' AND ";
$sql .= "hard_drive_size = '$hard_drive_size' AND hard_drive_status = '$hard_drive_status' AND (hard_drive_timestamp = '$hard_drive_timestamp' OR hard_drive_timestamp = '$timestamp')";
if ($verbose == "y"){echo $sql . "<br />\n\n";}
$result = mysql_query($sql) or die ('Insert Failed: ' . mysql_error() . '<br />' . $sql);
$myrow = mysql_fetch_array($result);
if ($verbose == "y"){echo "Count: " . $myrow['count'] . "<br />\n\n";}
if ($myrow['count'] == "0"){
// Insert into database
$sql = "INSERT INTO hard_drive (hard_drive_uuid, hard_drive_caption, hard_drive_index, ";
$sql .= "hard_drive_interface_type, hard_drive_manufacturer, hard_drive_model, ";
$sql .= "hard_drive_partitions, hard_drive_scsi_bus, hard_drive_scsi_logical_unit, ";
$sql .= "hard_drive_scsi_port, hard_drive_size, hard_drive_status, hard_drive_timestamp, ";
$sql .= "hard_drive_first_timestamp, hard_drive_pnpid) VALUES (";
$sql .= "'$uuid', '$hard_drive_caption', '$hard_drive_index', ";
$sql .= "'$hard_drive_interface_type', '$hard_drive_manufacturer', '$hard_drive_model', ";
$sql .= "'$hard_drive_partitions', '$hard_drive_scsi_bus', '$hard_drive_scsi_logical_unit', ";
$sql .= "'$hard_drive_scsi_port', '$hard_drive_size', '$hard_drive_status', '$timestamp', '$timestamp', '$hard_drive_pnpid')";
if ($verbose == "y"){echo $sql . "<br />\n\n";}
$result = mysql_query($sql) or die ('Insert Failed: ' . mysql_error() . '<br />' . $sql);
} else {
// Already present in database - update timestamp
$sql = "UPDATE hard_drive SET hard_drive_timestamp = '$timestamp', hard_drive_pnpid = '$hard_drive_pnpid' WHERE hard_drive_index = '$hard_drive_index' AND ";
$sql .= "hard_drive_uuid = '$uuid' AND hard_drive_timestamp = '$hard_drive_timestamp'";
if ($verbose == "y"){echo $sql . "<br />\n\n";}
$result = mysql_query($sql) or die ('Insert Failed: ' . mysql_error() . '<br />' . $sql);
}
}
[/code]

Changes on open_audit.sql

[code]
DROP TABLE IF EXISTS `hard_drive`;
CREATE TABLE `hard_drive` (
`hard_drive_id` int(10) unsigned NOT NULL auto_increment,
`hard_drive_uuid` varchar(100) NOT NULL default '',
`hard_drive_caption` varchar(100) NOT NULL default '',
`hard_drive_index` int(11) unsigned NOT NULL default '0',
`hard_drive_interface_type` varchar(10) NOT NULL default '',
`hard_drive_manufacturer` varchar(100) NOT NULL default '',
`hard_drive_model` varchar(100) NOT NULL default '',
`hard_drive_partitions` int(11) unsigned NOT NULL default '0',
`hard_drive_scsi_bus` varchar(10) NOT NULL default '',
`hard_drive_scsi_logical_unit` varchar(100) NOT NULL default '',
`hard_drive_scsi_port` varchar(10) NOT NULL default '',
`hard_drive_size` int(11) unsigned NOT NULL default '0',
`hard_drive_status` varchar(100) NOT NULL default '',
`hard_drive_pnpid` varchar(200) NOT NULL default '',
`hard_drive_timestamp` bigint(20) unsigned NOT NULL default '0',
`hard_drive_first_timestamp` bigint(20) unsigned NOT NULL default '0',
PRIMARY KEY (`hard_drive_id`),
KEY `id` (`hard_drive_uuid`),
KEY `id2` (`hard_drive_timestamp`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
[/code]


Can you add this to the svn Version. :wink: :wink:

Author:  ef [ Sat Feb 16, 2008 7:03 am ]
Post subject:  Re: Audit Harddrive SMART.

This feature is present since SVN rev. 959
Don't rely on the reported status in case of disk arrays, I'm not sure if this value could be or not accurate in this case.

Page 1 of 1 All times are UTC + 10 hours
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/