Uptime Rechner?

Hallo,

es gibt ja den Befehl „IPS_GetUptime“ wo mit ich erfahre wann IPS da letzte mal gestartet wurde.
Gibt es solch einen Befehl auch für den letzten Neustart des Rechners?

In der Doku unter Modulreferenz \ System Informationen habe ich leider keinen Befehl dafür gefunden.

Wie löst Ihr das Problem?

Tschau Hein09

Hallo Hein!

Das kommt ganz darauf an, ob du dein IPS auf einem Windows oder einem Linux-System am Laufen hast :slight_smile:

Edit: Sehe grad - wir sind im IPS 2.x/3.x Bereich, da gab es glaube ich nur Windows?! :smiley:

Dann hier 2 Links mit den passenden Befehlen und Tools :slight_smile:
How to get the uptime in windows - Stack Overflow
Windows-Uptime remote erfragen über WMI und Powershell | WindowsPro

Die Befehle in Kombination mit IPS_ExecuteEx führen dich zum Ziel.
IPS_ExecuteEx — IP-Symcon :: Automatisierungssoftware

Grüße,
Chris

Hallo Chris,

vielen Dank für die Infos.
Ich arbeite mit Windows 10, den Befehl IPS_ExecuteEx hatte ich mir auch schon angeschaut.
Funktioniert der auch wenn man nicht eingeloggt ist auf dem Rechner?
Und wie bekomme ich das Ergbnis aus der Kommandozeile herraus?

Tschau Hein09 (Gunnar)

Hi Gunnar! :slight_smile:

Kopier mal das Skript bei dir rein und dann führe es aus…dann weißt du Bescheid :wink:

<?
$result = IPS_Execute("cmd /c dir", "", false, true);

echo $result;
?>

…statt „cmd /c dir“ könntest du dann deine EXE mit Befehlen da einfügen oder Powershell Befehle oder was auch immer :slight_smile:

Danach die Rückgabe noch „schön“ machen und das ausfiltern was du brauchst und ausgeben oder in eine Variable speichern…fertig :cool:

Grüße,
Chris

Hallo Chris,

vielen Dank für den Tip, werde das im laufe des Tages mal testen.

Tschau Hein09

Ich hab da mal ein kleines Script für WinPCs erstellt …

Voraussetzung ist die Datei im Anhang unter c:\

<?

$result = IPS_Execute("cmd /c c:\uptime.exe", "", false, true);

//echo $result;

$result2 = explode(" ",$result);

//$result2 = array(0=>"",1=>"14:45:50",2=>"uptime",3=>"23:52:14"); // zum testen ohne Tage, nur für uptime

//$result2 = array(0=>"",1=>"14:45:50",2=>"uptime",3=>"29",4=>"days,",5=>"23:52:14"); // zum testen mit Tagen, nur für uptime

//print_r($result2);
echo "
";

if (isset($result2[5]))// wenns mit tagen ist
    {
    $zeit = trim($result2[5]);
    //print_r($zeit);
    $tage = $result2[3];
    $zeit = strtotime($zeit);
    $std = date("G",$zeit);
    $min = date("i",$zeit)*1; //*1 um die führende 0 wegzubekommen
    
    if ($tage == 1) // wenn die tageszahl 1 dann text Tag
       {$tagtxt = " Tag ";}
    else
       {$tagtxt = " Tage ";}
       
    if ($std == 1) // wenn die stundenzahl 1 dann text Stunde
       {$stundentxt = " Stunde ";}
    else
       {$stundentxt = " Stunden ";}

    if ($min == 1) // wenn die minutenzahl 1 dann txt Minute
       {$minutentxt = " Minute ";}
    else
       {$minutentxt = " Minuten ";}

    $uptime = $tage.$tagtxt.$std.$stundentxt.$min.$minutentxt."
";
    echo "ServerUpTime ".$uptime;
    }
else // wenns ohne tage ist
    {
    $tage = 0;
    $zeit = trim($result2[3]);
    //print_r($zeit);
    $zeit = strtotime($zeit);
    $std = date("G",$zeit);
    $min = date("i",$zeit)*1; //*1 um die führende 0 wegzubekommen
    
    if ($std == 1) // wenn die stundenzahl 1 dann text Stunde
       {$stundentxt = " Stunde ";}
    else
       {$stundentxt = " Stunden ";}
       
    if ($min == 1) // wenn die minutenzahl 1 dann txt Minute
       {$minutentxt = " Minute ";}
    else
       {$minutentxt = " Minuten ";}

    $uptime = $std.$stundentxt.$min.$minutentxt."
";
    echo "ServerUpTime ".$uptime;
    }

setvalue(15011, $uptime);

// ServerStartzeit ermitteln ---------------------------------------------------
$sekTage = $tage * 86400;
$sekTime = $std*3600 + $min*60;
$sekRuntime = $sekTage + $sekTime;
$startTime = time()-$sekRuntime;
$startTime = EN_DE_Date_Umwandler("D d.m. Y H:i",$startTime);
echo "ServerStartZeit ".$startTime;
// EN_DE_Date_Umwandler kommt bei mir aus der
// __autoload, ursprünglich aus https://www.symcon.de/forum/threads/28210-IP-Symcon-Wie-kann-ich-2-0?p=264806#post264806
// hab da nur noch die fehlenden Monate eingefügt, damit ich die Function universell nutzen kann.

setvalue(30032, $startTime);

?>


uptime.1.1.zip (5.97 KB)

Abend!

Hab da auch mal was gebaut, funktioniert komplett ohne extra Tools. Getestet unter Windows 7. Keine Ahnung, ob das auch unter Win8 oder Win10 funktioniert. Rückmeldungen dazu sind Willkommen, dann könnte ich das im Skript ergänzen :slight_smile:

IP-Symcon - Wie kann ich… 2.0 - Seite 7 // Server Uptime auslesen (Windows)

Grüße,
Chris

Moin,

vielen Dank für die beiden Scripte, ich habe den von Bayaro getestet, er läuft bei mir unter WIN10Pro 64 einwandfrei.

Tschau Hein09

Danke für die Info, schreib ich gleich dazu :slight_smile:

Grüße,
Chris

Hallo,
habe das Script von bayaro seit langem im Einsatz. Habe jetzt aber zufällig gesehen, dass es bei mir nicht mehr richtig läuft.

Der Befehl

$uptime	= IPS_Execute('cmd /c net statistics Arbeitsstationsdienst | find /I "Statistik seit"', "", false, true);
echo $uptime;

gibt in $uptime „FIND: Parameterformat falsch“ zurück.

Wenn ich in der Windows-Eingabefenster den Befehl

cmd /c net statistics Arbeitsstationsdienst | find /I "Statistik seit"

eingebe, ist die Ausgabe ok.

Arbeite mit WIn.10 und IPS 5.0

Kann mir da jemand auf die Sprünge helfen?

Gruß, Peter