Skriptet är i PHP och använder Pushover som bärare. Pushover kostar 55 kr engångskostnad och du får skicka 10000 anrop per månad.
Det funkade så bra att jag vill dela med mig.
Håll tillgodo
Sätts med fördel upp som ett cron.jobb, kör det två gånger om dagen (eller fler om ni är paranoida)
EDIT: Kräver att ni aktiverar Redfish i iDrac: Overview > iDRAC Settings > Network > Services
Kod: Markera allt
<?php
// Array med URL'er som iDrac har för, i detta fall två volymer och kontrollern.
$idracchecks = array(
"https://192.168.XXX.YYY/redfish/v1/Systems/System.Embedded.1/Storage/Volumes/Disk.Virtual.0:RAID.Integrated.1-1",
"https://192.168.XXX.YYY/redfish/v1/Systems/System.Embedded.1/Storage/Volumes/Disk.Virtual.1:RAID.Integrated.1-1",
"https://192.168.XXX.YYY/redfish/v1/Systems/System.Embedded.1/StorageControllers/RAID.Integrated.1-1");
// Loopa antal objekt i arrayn
for($urls = 0; $urls < sizeof($idracchecks); $urls++) {
getidrac($idracchecks[$urls]);
}
// Pushover-funktion. Tar två variabler, i deta fall namnet på volymen/kontrollern och statusen
function send_pushover($module, $error)
{
curl_setopt_array($ch = curl_init(), array(
CURLOPT_URL => "https://api.pushover.net/1/messages.json",
CURLOPT_POSTFIELDS => array(
"token" => "DITT_APP_TOKEN", // Skapa en ny app i Pushover med rätt namn
"user" => "DITT_USER_TOKEN", // Userkey
"message" => "Fel i modul: " . $module . "Felkod: " . $error,
),
CURLOPT_SAFE_UPLOAD => true,
CURLOPT_RETURNTRANSFER => true,
));
curl_exec($ch);
curl_close($ch);
}
// Kolla iDrac-url, kommer från main for loop
function getidrac($url) {
$CurlVerbose = FALSE; // Om det blir fel, sätt denna till TRUE och kör skriptet manuellt
$headers = array(
'Accept: application/json',
'Content-type: application/json',
);
$username = "readuser"; // Skapa ny användare i idrac, räcker med Read-Only
$password = "readpassword"; // Sätt ett bättre lösenord :-)
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 1); // Måste skicka med headers
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); // namn och lösenord för en read-only användare i iDrac
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); // BASIC auth
curl_setopt($ch, CURLOPT_VERBOSE, $CurlVerbose); // Se ovan
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // headern
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // skippa check av SSL-certet
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // skippa check av hostnamnet
$response = curl_exec($ch);
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); // ta ut header-storleken
$body = substr($response, $header_size);
// var_dump($body); // aktivera för debug
//$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // enable om du vill se returstatusen
curl_close($ch);
$json = json_decode($body,true);
// $json["Status"]["Health"] = "Degraded"; // enable om du vill testa att Pushover funkar
if($json["Status"]["Health"] != "OK") {
send_pushover($json["Name"], $json["Status"]["Health"]);
}
}
?>