Abfrage Rechner im Firmennetz eingeschaltet / Ping?

  • Ich will ein altes Batchprogramm "modernisieren" und auf AutoIt umstellen mit einem kurzen Script, das mir den Zustand der Clients (an/aus) im Firmennetzwerk mit einer Ampel anzeigt.

    So in der Art:


    In der Batch habe ich das mit Ping gemacht. War ein wenig tricky, da Ping mit der aktuellen Microsoft-Umgebung und in Verbindung mit IPV6 nicht mehr so ganz eindeutig funktioniert. Habe lange testen und suchen müssen - ohne das Find "TTL" funktioniert es nicht:

    Code
    :ping
    ping %ip% -n 1 -w 1000 -l 2000 -4 | find /i "TTL" 
    if errorlevel 1 (set rc=PcOff) else (set rc=PcOn)
    goto :eof

    Das Ganze könnte ich jetzt so ohne Probleme in AutoIt umsetzen, aber gibt es vielleicht einfachere/bessere Methoden, um einen IP-Bereich auf an/aus zu überprüfen? Vielleicht könnte ich auch noch auf die Idee kommen, anzuzeigen, wer gerade wo angemeldet ist (dazu habe ich noch keine Idee)?

    :)

  • Hallo!

    Du kömmtest Dir einen Agent schreiben, der sich bei einen Server meldet - also genau umgekehrt: nicht Dein Programm sieht nach ob der Client da ist, sondern der Zielrechner meldet sich (bei Hochfahren, Zeitintervall,...)

    Des weiteren könnte auch Dein Agent auf Dein Programm warten und eine Antwort senden (Client-Server)

    Sollte ein Active Directory zur Vergügung stehen, kannst du auch das Computerkonto abfragen wann sich der Client das letzte mal gemeldet hat. Die AD-UDF von Water ist da sehr hilfreich.

    lg

    Racer

  • Das mit dem Agent mache ich mit meinem aktuellen Programm sowieso schon (siehe Bild oben). Allerdings zeigt mir das nur an, ob jemand das Programm nutzt oder nicht. Hintergrund: wenn ich ein Update einspielen will, stören die User ;)

    Könnte ich für das An/Aus natürlich ins Login- und Logout-Script packen. Gute Idee, belastet den Server überhaupt nicht und die Clients ebenfalls nicht.

    :)

  • Lasse es nicht den Benutzer starten, sondern als System!

    Ein paar Worte dazu: Dein Agent muss ohne GUI auskommen. Dann erstellst Du einen Task als System, der bei einem Systemstart aufgerufen wird. Ob der Agent "endlich" ist und nur z.B.: alle 10 Min läuft oder als "Dauerläufer" ist Geschmacksache und kommt auf den Anwendungsfall an!

    Der Vorteil ist das es kein User (sofern nur Userrechte) schafft den Agent zu beenden und Du keine Probleme mit lokalen Rechten.

    Der Nachteil: Benutzersachen abfragen ist etwas aufwändinger und Zugriff übers Netz ist dann auch etwas fordernt.

    lg

    Racer

  • Exakt das nutze ich selber auch. Habe dazu ein Script per gpo bei anmelden, abmelden, starten und beenden hinterlegt welches dann den Status an einen api Schnittstelle sendet. Zusätzlich habe ich noch ein Fallback Script laufen welche alle Rechner welche mit dem Status an in der DB stehen periodisch anpingt. Dies hat den Grund, damit Rechner welche warum auch immer nicht normal heruntergefahren werden auch als offline erkannt werden.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Zusätzlich habe ich noch ein Fallback Script laufen welche alle Rechner welche mit dem Status an in der DB stehen periodisch anpingt. Dies hat den Grund, damit Rechner welche warum auch immer nicht normal heruntergefahren werden auch als offline erkannt werden.

    Da hast Du Recht, aber unter Berücksichtigung der "Abstürze" kann man dann doch wieder ausschließlich mit Ping arbeiten!? Letzte Woche hat meine USV (!) plötzlich ohne Stromausfall meinem Rechner den Strom abgedreht, da hätte kein Abmeldescript geholfen.

    :)

  • Genau das macht das Fallbackscript eben und zwar Rechner welche in der DB den Status an haben anpingen. Ein ping auf einen Rechner der antwortet ist aber eben wesentlich schneller als auf einen der aus ist. Von daher nur als Fallback drin.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.