Nutzt noch jemand WHS (Windows Home Server v1)?

Wollte einfach mal fragen ob außer mir noch jemand WHS v1 benutzt?

Bin zwar vor Jahren wegen fehlender PHP Unterstützung auf RaspPi für IPS umgestiegen (und auch nicht bereut), aber den WHS nutze ich immer noch für Backup und als Fileserver.

Habe ein, zwei Scripte am laufen die mit WHS kommunizieren, vielleicht hat jemand auch paar Lösungen auf Lager.

Freue mich auf Euer Feedback.
Heiko

Muss es Windows sein?
Xpenology ist ganz cool.

Grüße,
Kai

Ja ich benütze den WHS - HP DataVault X311 schon seit Jahren um meine Rechner zu sichern.
Ich bin sehr zufrieden und finde die Lösung einfach Klasse.
Der WHS hat mich echt schon oft gerettet.

Was mich jetzt natürlich brennend interessiert sind die Skript´s die du am laufen hast.
Damit habe ich mich noch gar nicht beschäftigt.

Ich habe mich frühzeitig von WHS getrennt, als klar war, dass MS überhaupt keine Lust mehr drauf hat.

Gesendet von iPhone XS mit Tapatalk

Naja Überreste gibt es ja noch in Form der Windows Server Essentials Rolle, nur der WHS selber ist tot, da setzt ja Microsoft inzwischen auf Cloudlösungen.

Den V1 habe ich kurz nach dem Erscheinen des WHS 2011 durch Diesen ersetzt.
Der läuft auch noch bis heute.
Problemlos, nur das man nach fast jeden Windows 10 Update den Connector neu installieren darf.
Michael

Ha, freut mich ja das es noch andere Leute gibt die damit Erfahrungen gesammelt haben :slight_smile:

Ich finde und fand das System bis heute auch noch genial, echt schade das MS darauf keine Lust hatte :mad:

@Michael19781

Bei mir war es der Acer Aspire easyStore H341 - gesehen, verliebt … gekauft.

Ich habe ein Script das den Health-Status und die Sicherungszeiten ausließt und anzeigt (siehe Bild).

@Nall-chan

Ja, das mit dem Connector ist mit Win10 etwas komplizierter geworden, aber es funktioniert noch :frowning:

Bin gespannt wie lange der Rechner noch durchhält … paar Platten hat er schon gefressen in den vielen Jahren!

Danke & Ciao
Heiko

Hallo Pitti, ich möchte das Thema noch mal´s hervor holen.
Mich würden deine Scripte die du zum auslesen des WHS nimmst brennend Interessieren.
Magst du Sie hier veröffentlichen:) Dachte ich frag mal ganz Frech:D

Hi Michael,

natürlich, dafür hatte ich ja auch den Thread auf gemacht :wink:

Das Script ist schon etwas älter (Anfangszeit) und ist leider nicht selbstinstallierend.
Schau mal ob Du zurecht kommst, ansonsten einfach nachfragen. IP Adresse richtig eintragen!
Von der Struktur her liegen 3 String-Variablen unterhalb des Scripts für Serverzeiten und -status.
Zusätlich liegt unterhalb des Scripts ein Dummy-Modul (namens „Sicherung“) mit pro Rechner einer Stringvariablen mit dem identischen Namen des registrierten Computers am WHS.


<?php
################################################################################
# Script:   Network.Health.ips.php
# Version:  2.1.20190825
# Author:   Heiko Wilknitz
#
# Windows Home Server Health Status auslesen!
#
# -------------------------------- Changelog -----------------------------------
#
# v2.1.20190825 - WHS_Info mit hinzugenommen
#
# ------------------------------ Konfiguration ---------------------------------
#
# WHS Health XML Status File
$url='http://192.x.y.z:55000/health/health.xml';
#umlaute = array("ä","ö","ü","Ä","Ö","Ü","ß");
$umlaute = array("ä","ö","ü","Ä","Ö","Ãœ","ß");
$replace = array("ä","ö","ü","Ä","Ö","Ü","ß");
# 
# Status Variablen 
$idUptime 	= 39095;
$idUpdate 	= 59656;
$idConsole	= 12778;
# Dummy Modul, welches die Namen der Rechner enthält (String-Varibalen mit 1:1 Computernamen)
$idBackup	= 50296;
#
################################################################################

$count  = 0;

$html = '<table class="wwx"><thead class="orange"><tr><th style="width: 30px;">Nr.</th><th style="width: 150px;">Status</th><th>Beschreibung</th></tr></thead>';

################################################################################
// Load XML
$xml = simplexml_load_file($url);
date_default_timezone_set('UTC');

################################################################################
// UPTIME
$diff 		= $xml->Hardware->SystemInformation["Uptime"] * 60;
$tage		= intval($diff/86400);
$stunden	= intval(($diff-$tage*86400)/3600);
$minuten	= intval(($diff-$tage*86400 - $stunden*3600)/60);
$sekunden 	= $diff-$tage*86400-$stunden*3600-$minuten*60;
$uptime 	= $tage.' Tage '.$stunden.' Stunden '.$minuten.' Minuten';
SetValueString($idUptime , $uptime);

################################################################################
// LASTUPDATE
$date = date_create_from_format('Y-m-d H:i:sZ', $xml->attributes()->LastUpdated);
$ts = strtotime($xml->attributes()->LastUpdated);
SetValueString($idUpdate , strftime('%A %d.%m.%Y %H:%M:%S', $ts));

################################################################################
// NOTIFICATIONS (CONSOLE)
foreach ($xml->Notifications->Notification as $note) {
    if($note->attributes()->IsSuppressed != '1') { // and ($note->attributes()->Severity == "WHS_ERROR" or $note->attributes()->Severity == "WHS_WARNING")) {
        $header = str_replace($umlaute, $replace, $note->attributes()->TextHeader);
        $description = str_replace($umlaute, $replace, $note->attributes()->TextDescription);
        $image = "<img src='/user/health/yellow.png' />";
        if($note->attributes()->Severity == "WHS_ERROR") {
            $image = "<img src='/user/health/red.png' />";
        }
        else if ($note->attributes()->Severity == "WHS_INFO") {
            if ((strpos($note->attributes()->UniqueID, 'WHS.Backup.CurrentOperation') !== false)  && (strpos($header, 'Sicherungsdienst') === false)) {
                $image = "<img src='/user/health/blue.png' />";
                			$stock = 
                $description = $header;
                $header = GetMark($description, 'von * wird').' Backup';
            } else {
                continue;
            }
        }
        $html = $html."<tr><td>".$image."</td><td>".$header."</td><td>".$description."</td></tr>";
        // Nur wenn ein Eintrag da ist!
        $count++;
    }
}
if ($count == 0) {
    //	"<img src='\user\whs\green.png' /> Es liegen keine Statusmeldungen vor.";
    $image = "<img src='\user\health\green.png' style='vertical-align: middle; padding-right:10px;'/>";
    $header = "Fehlerfrei - ";
    $description = "Es liegen keine Statusmeldungen vor.";
    $html = "<tr><td>".$image."</td><td>".$header."</td><td>".$description."</td></tr></table>";
} else {
    // "Es liegen ".$count." Meldung(en) vor.<br /><br />".
    $html = $html."</table>";
}
//print $html;
SetValueString($idConsole , $html);

################################################################################
// COMPUTERINFO
$ids = IPS_GetChildrenIDs($idBackup);
foreach ($ids as $id) {
    $array = IPS_GetObject($id);
    $name = $array['ObjectInfo'];
    if($name == '') {
        $name = $array['ObjectName'];
    }
    //print $name;
    foreach ($xml->Backup->ComputerInfo as $pc) {
        if($name == $pc->attributes()->ComputerName) {
           SetValueString($id, $pc->attributes()->DaysSinceBackup.' Tag(e)');
        }
    }
}

// Diese Funktion trennt die relevanten Bereiche aus dem Ausschnitt heraus 
// $string ist dabei der zu durchsuchende Gesamtstring, 
// in $Mark sind durch "*" getrennt der Beginn des zu suchenden Strings  
// und das Ende des zu suchende Abschnittes. 
// Beispiel für den Text "<div>*</div></li>" 
function GetMark($string, $mark) { 
    $find = explode("*",$mark); 
    $lens  = strlen($find[0]);
    $lene  = strlen($find[1]); 
    $start = strpos($string, $find[0]); 
    //echo "Start:".$start.PHP_EOL;
    $stop  = strpos($string, $find[1], $start+$lens);
    //echo "Stop:".$stop.PHP_EOL;
    $inner = substr($string, $start+$lens, $stop-$start-$lens);
    return $inner; 
}

################################################################################
?>

Viel Erfolg
Heiko

Super, vielen Dank für das Skript:)
Ich habe alle Variablen nach Deiner Vorgabe angelegt und es läuft auf Anhieb.
DANKE
Grüße Michael