#!/usr/bin/php ".$name."".$data."".$type.""; } $output['chassis'] = shell_exec($cmd['chassis']); $output['sensor'] = shell_exec($cmd['sensor']); //Chassis /* Sample output System Power : on Power Overload : false Power Interlock : inactive Main Power Fault : false Power Control Fault : false Power Restore Policy : always-on Last Power Event : Chassis Intrusion : inactive Front-Panel Lockout : active Drive Fault : false Cooling/Fan Fault : false Front Panel Light : off */ /* Sample XML 28.5DRIVE BAYgeneric_data */ $array = explode("\n",$output['chassis']); foreach ($array as $value) { if($value != "") { $tmp = explode(":",$value); $status[trim($tmp[0])] = trim($tmp[1]); } } unset($array); unset($tmp); foreach ($status as $name => $data) { switch($name) { ## False is good case "Power Overload": case "Main Power Fault": case "Power Control Fault": case "Drive Fault": case "Cooling/Fan Fault": $data = ($data == "false" ? 1 : 0); print_xml_sensor ($name, $data); break; ## Inactive is good case "Power Interlock": $data = ($data == "inactive" ? 1 : 0); print_xml_sensor ($name, $data); break; ## On is good case "System Power": $data = ($data == "on" ? 1 : 0); print_xml_sensor ($name, $data); break; ## Off is good case "Front Panel Light": $data = ($data == "off" ? 1 : 0); print_xml_sensor ($name, $data); break; ## Ignore the following values case "Last Power Event": case "Power Restore Policy": default: break; } } unset($status); //End of Chassis //Begin of Sensor $array = explode("\n",$output['sensor']); foreach ($array as $value) { if($value != "") { $tmp[] = explode("|",$value); } } /* Sample $tmp: [1] => Array ( [0] => CPU A Core [1] => 1.264 [2] => Volts [3] => ok [4] => na [5] => na [6] => 1.000 [7] => 1.368 [8] => na [9] => na ) */ unset ($tmp[0]); foreach ($tmp as $value_arr) { if (trim($value_arr[1]) == "na") { continue; } elseif (trim($value_arr[2]) == "discrete") { continue; } print_xml_sensor (trim($value_arr[0]).' ('.trim($value_arr[2]).')', trim ($value_arr[1]), "generic_data"); } //End of Sensor ?>