War vermutlich schneller gelöst als die Diskussion hier
Zwei PHP Dateien, ein StatusCake sowie Pushover Account und die CCU Prüfung ist ab sofort aktiv.
Falls es jemand nachbauen will:
PHP Datei für euren Webserver die von der CCU aufgerufen wird:
Code: Alles auswählen
<?php
$inhalt = "ping";
$handle = fopen ("ccu_alive.txt", "w");
fwrite($handle, $inhalt);
fclose ($handle);
?>
PHP Datei die von StatusCake abgefragt wird:
Schwellwert = der Zeitaum, wie alt der letzte Ping sein kann in Sekunden
Code: Alles auswählen
<?php
$schwellwert = '300'; //In Sekunden
$datei = "ccu_alive.txt";
if (file_exists($datei)) {
$dateizeit = @filemtime($datei);
if (!$dateizeit or (time() - $dateizeit >= $schwellwert)){
http_response_code(404);
echo "CCU Offline";
} else {
http_response_code(200);
echo "CCU Online";
}
} else {
http_response_code(404);
echo "Error: Datei nicht vorhanden";
}
?>
Programm auf der CCU. Zeitsteuerung jede Minute, wenn dann Script:
Code: Alles auswählen
string tmpA= "https://URL/DATEINAME";
dom.GetObject("CUxD.CUX2801001:12.CMD_EXEC").State("wget -q -O - '"#tmpA#"'");
Wenn keine Cuxd vorhanden ist, geht es alternativ auch mit folgendem Script:
Code: Alles auswählen
string lGetOut;
string lGetErr;
string lUrl="https://URL/DATEINAME";
system.Exec("wget -q -O - " # lUrl, &lGetOut, &lGetErr);
Hab es ohne Authentifizierung gebaut, reicht mir völlig im ersten Anlauf. Sobald die CCU sich über 5 Min nicht meldet erhalte ich eine Pushnachricht via Pushover. Oder Mail usw.
*Update*
Falls jemand zumindest gaaaaanz grob eine Art Schutz vor der PHP Datei haben will die den Status der CCU empfängt, kann man das mit URL Parametern machen. So ist zumindest sichergestellt, das nicht irgendein Bot die CCU für lebend erklärt. Alternativ zum Beispiel oben würde auch gehen:
Code: Alles auswählen
<?php
if(isset($_GET['CCU']))
{
$wert = $_GET['CCU'];
if($wert == "alive")
{
date_default_timezone_set('Europe/Berlin');
$date = new DateTime();
$date = $date->format("y:m:d H:i:s");
$handle = fopen ("ccu_alive.txt", "w");
fwrite($handle, $date);
fclose ($handle);
}
}
?>
Dann müsste an die aufzurufende URL in diesem Fall noch ein ?CCU=alive