stefanwillms
Goto Top

Zeitvergleich über Batch-Skript

Hallo zusammen,

ich habe ein kleines Problem. Ich abeite in einer kleinen Firma und dort muss ich mich nebenher um die Administration unseres Netzwerkes kümmern. Neuerdings spiegeln wir unseren Server in eine Cloud. Die Synchronisation ist dabei leider etwas lahm und manchmal hängt sie sich auch ganz auf. Weil es momentan für dieses Problem noch keine automatische Fehlermeldung gibt, fällt das meistens erst auf, wenn der Chef von unterwegs zugreifen will und dann seine Dateien vom Vortag noch nicht in der Cloud sind...
Diese würde ich nun gerne ganz einfach über ein paar Batch-Skripe lösen.

Meine Idee.
Auf dem Server wird alle 10 Minuten ein Skript ausgeführt, dass das aktuelle Datum und die Uhrzeit in eine "sync.txt" schreibt.
Wenn der Server mit der Cloud synchronisiert wird, wird diese Datei in die Cloud geladen. Da ein Durchlauf der Synchronisation oft lange dauert ist damit die sync.txt in der Cloud in der Regel nicht mehr uptodate.
Wenn ich über ein weiteres Skript diese Datei aus der Cloud lade, sehe ich am Zeitstempel wann in etwa die letzte Synchronisation stattgefunden hat. Soweit funktioniert bisher schon alles.

Jetzt mein eigentliches Problem.
Ich würde gerne von dem Batch-Skript das mir die Datei aus der Cloud läd, automatisch den Zeitstempel aus der "sync.txt" auslesen und mit der aktuellen Zeit vergleichen lassen.
Falls die Zeitdifferenz zu groß ist (z.B. 3 Stunden) dann soll eine Aktion (z.B. Fehlermail versenden) ausgelöst werden.

Die "sync.txt" wird über ein Script mit echo%date% %time% > "sync.txt" gefüllt und hat also nur 1 Zeile mit z.B. dem Inhalt 27.10.2017 11:34:42,58

Hat jemand eine Idee wie das umzusetzen wäre? Meine Fähigkeiten stoßen da leider an ihre Grenzen.

Vielen Dank im Voraus für eure Mühe.

LG Stefan

Content-Key: 352984

Url: https://administrator.de/contentid/352984

Ausgedruckt am: 29.03.2024 um 00:03 Uhr

Mitglied: rubberman
Lösung rubberman 27.10.2017 aktualisiert um 13:23:48 Uhr
Goto Top
Zitat von @StefanWillms:

Diese würde ich nun gerne ganz einfach über ein paar Batch-Skripe lösen.

"Batch" und "ganz einfach" geht hier aber nicht zusammen, da Batch keinen DateTime Typ kennt, mit dem man einfach mal Zeitdifferenzen ausrechnen könnte.
Natürlich geht das am Ende schon. Es gibt Leute die haben bereits fertige Lösungen dafür. (Z.B. die DateToSecs Routine). Voraussetzung ist aber dass du Datum und Zeit vorher aufdröselst, wobei klar ist, dass die Strings in %date% und %time% sich international unterscheiden...

Steffen
Mitglied: 134464
134464 27.10.2017 aktualisiert um 13:26:49 Uhr
Goto Top
Die Synchronisation ist dabei leider etwas lahm und manchmal hängt sie sich auch ganz auf.
Ich würde eher dafür eine Lösung herleiten.
Für sowas gibt es genug Mittel wie Taskplaner Status, Monitoring-Tools wie PRTG etc. die das vernünftig lösen anstatt sich so eine wahrliche "Krücke" zu basteln.
Mitglied: StefanWillms
StefanWillms 27.10.2017 aktualisiert um 14:31:28 Uhr
Goto Top
@rubberman:
OK. Danke für den Hinweis. Ich hatte befürchtet, dass es nicht so einfach werden würde. Ich schau mir die DateToSecs Routine mal an. Danke.
Mitglied: StefanWillms
StefanWillms 27.10.2017 aktualisiert um 14:32:04 Uhr
Goto Top
@kokosnuss:
Ja, da bin ich ganz bei dir. Das wäre das Optimum. Leider ist das aus meiner Position heraus nicht so einfach. (Ich bin kein richtiger Admin, nur derjenige, der bei uns die meiste Ahnung von Computern hat face-smile Die ganze Cloud-Geschichte ist an mir vorbei gelauften über einen externen Anbieter, der jetzt nicht zu Potte kommt. Wenn jetzt was nicht klappt kommt mein Chef zu mir und ich muss gucken wie ich dass neben meiner eigentlichen Arbeit geregelt kriege...
Mitglied: StefanWillms
StefanWillms 27.10.2017 um 14:39:12 Uhr
Goto Top
OK. Also rubberman hat mich mit dem Hinweis, dass Batch keinen DateTime Typ kennt auf eine andere Idee gebracht die zwar noch abstruser ist, aber die erstaunlich schnell und gut funktioniert.
Ich lass die Text Datei von einem Excel-Makro einlesen. Excel hat gute DateTime Funktionen... und mit VBA kenn ich mich wesentlich besser aus als mit Batch.

Vielen Dank für eure Hilfe. Ich werde das Thema als gelöst markieren weil ich ja jetzt ein Workaround habe.

LG Stefan
Mitglied: 134464
134464 27.10.2017 aktualisiert um 15:29:36 Uhr
Goto Top
Mit Powershell wäre das effektiver
If((Get-Date (gc 'c:\datei.txt' -TotalCount 1)) -lt (get-date).AddHours(-3)){  
   Write-Host "Achtung, Zeit älter als 3 Stunden"  
}