Server Festplatten Status prüfen (SMART)

Damit ich nicht immer selbst nachschauen muss mit Crystal Disk info, hier ein Script, das einmal täglich eingeplant werden kann um den Status der Festplatten zu lesen:


<?
/* Script Info:
  Dieses script prüft mittels den smart tools für windows
   http://sourceforge.net/projects/smartmontools/files/smartmontools
  in welchem Zustand die Festplatten sind. Bentutz wird die
  smartctl.exe - es reicht, diese irgendwo hin zu kopieren, wo
  Windows sie findet. zb. windows\system32
*/

 /* ++++++++++ CONFIG ++++++++++++++++++++++++*/
 $disks[] ="/dev/hda";
 $disks[] ="/dev/hdb";
 $disks[] ="/dev/hdc";
 $disks[] ="/dev/hdd";

 $command = "smartctl --health <disk>";

 // Create variables for disk status
 $c_diskvar = true; // false if not
  /* ++++++++++ END CONFIG ++++++++++++++++++++++++*/


 echo "Prüfe Laufwerksstatus:

";

 $alarm= false;
 foreach ($disks as $disk){
   $e_cmd = str_replace("<disk>",$disk,$command);
   unset($output);
	exec($e_cmd,$output);
	if(strpos(implode($output, " "),"PASSED")>0){
	  $status = "OK";
	  $status_b = true;
	} else {
		$status = "Problem";
  	   $status_b = false;
	   $alarm= true;
	}
	echo "Laufwerk $disk Zustand: $status
";

 }

if ($c_diskvar){
		setValue(CreateVariableByName($_IPS['SELF'],"Harddisk Alarm",0,"~Alert"),$alarm);
}

function CreateVariableByName($id, $name, $type, $profile = "")
{
	# type: 0=boolean, 1 = integer, 2 = float, 3 = string;
    global $IPS_SELF;
    $vid = @IPS_GetVariableIDByName($name, $id);
    if($vid === false)
    {
        $vid = IPS_CreateVariable($type);
        IPS_SetParent($vid, $id);
        IPS_SetName($vid, $name);
        IPS_SetInfo($vid, "this variable was created by script #".$_IPS["SELF"]);
        if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
    }
    return $vid;
}
?>

Oh, alte und neue Schreibweise von $_IPS[‚SELF‘] gemischt :cool:

Neuer Link ab V6 (wird aber auch umgeleitet) :
http://sourceforge.net/projects/smartmontools/files/smartmontools/6.0/

Gruß
Bruno

CUT AND PASTE… fehler :wink:

Danke, funktioniert auch unter raspbian problemlos

Sebastian