Per Batch Systemzeit auslesen und mit einer anderen vergleichen
Hallo Helfer und Helferinnen
Wäre dankbar um Tipps, wie ich dieses Problem lösen könnte:
Würde gerne Systemzeit von Server1 mit der von Server2 vergleichen und bei einer bestimmten Differenz eine Textdatei generieren lassen.
Vielen Dank für Eure Hilfe!
Grüsse aus der Schweiz
Simon
Wäre dankbar um Tipps, wie ich dieses Problem lösen könnte:
Würde gerne Systemzeit von Server1 mit der von Server2 vergleichen und bei einer bestimmten Differenz eine Textdatei generieren lassen.
Vielen Dank für Eure Hilfe!
Grüsse aus der Schweiz
Simon
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 128152
Url: https://administrator.de/contentid/128152
Ausgedruckt am: 23.11.2024 um 19:11 Uhr
22 Kommentare
Neuester Kommentar
Servus,
Bedenke ein Script, dass zuerst den einen und dann den anderen abfragt - hat eine Latenz dazwischen..
Das sollte zum testen reichen
Gruß
edit: das geschriebene gilt selbstverfreilich nur dann, wenn beide Server tatsächlich die gleichen Einstellungen haben!
Ist einer englisch, der anderr deutsch - mag das ergebniss auch dann ein false ergeben, wenn die Zeiten stimmen.
Im zweifel hab ich nen NTP, der den Servern immer die Uhr stellt.
Bedenke ein Script, dass zuerst den einen und dann den anderen abfragt - hat eine Latenz dazwischen..
Das sollte zum testen reichen
net time \\server1 >c:\server1.txt
net time \\server2 >c:\server2.txt
for /f "tokens=7,9" %%i in ('find "\" c:\server1.txt') do echo %%i>c:\servertime1.log
for /f "tokens=7,9" %%i in ('find "\" c:\server2.txt') do echo %%i>c:\servertime2.log
fc c:\servertime1.log c:\servertime2.log && echo passt schon || echo uhrstimmtnicht >c:\serverzeitfehler.
Gruß
edit: das geschriebene gilt selbstverfreilich nur dann, wenn beide Server tatsächlich die gleichen Einstellungen haben!
Ist einer englisch, der anderr deutsch - mag das ergebniss auch dann ein false ergeben, wenn die Zeiten stimmen.
Im zweifel hab ich nen NTP, der den Servern immer die Uhr stellt.
fümpf minuten - ich weiss ja- dass Ihr Schweizer nicht so schnell seid - aber seit Ihr nicht alle Uhrmacher im Nebenjob?
Wenn ich das zimmern würde - wäre es ein krampf am ende.
siehe unten...
Warum stellst du dir Uhrzeit nicht (wenn schon nicht immer) dann wenigstens dann - wenn Sie nicht stimmt?
Net time \\server\ /set /Yes
Gruß
Servus Tsuki,
viele Wege / Rom oder so
Für weitere Fehlerabfragen bist du selber *lach* zuständig und dass die ganze Choose ebbes krümmer geschrieben ist - ich.
u.a auch der, dass das Script um ~ 15.00 nicht genau ist.
Gruß
viele Wege / Rom oder so
if not exist C:\script\zeitvergleich md C:\script\zeitvergleich
ping -n 1 server1 && net time \\server1>C:\script\zeitvergleich\server1.log
ping -n 1 server2 && net time \\server2>C:\script\zeitvergleich\server2.log
if not exist C:\script\zeitvergleich\server1.log if not exist C:\script\zeitvergleich\server2.log goto badboysdontcry
for /f "tokens=7,9" %%i in ('find "\" C:\script\zeitvergleich\server1.log') do echo %%i>C:\script\zeitvergleich\servertime1.log
for /f "tokens=7,9" %%i in ('find "\" C:\script\zeitvergleich\server2.log') do echo %%i>C:\script\zeitvergleich\servertime2.log
for /f "tokens=1,2 delims=:" %%i in (C:\script\zeitvergleich\servertime1.log) do set "s1=%%i%%j"
for /f "tokens=1,2 delims=:" %%i in (C:\script\zeitvergleich\servertime2.log) do set "s2=%%i%%j"
if %s1% equ %s2% goto ok
if %s1% gtr %s2% set /a diff=%s1%-%s2%
if %s1% lss %s2% set /a diff=%s2%-%s1%
if %diff% gtr 40 set s1 |findstr ".5." && set /a diff-=40
if %diff% gtr 40 set s2 |findstr ".5." && set /a diff-=40
if %diff% leq 5 goto ok
:notok
echo wer hat an der Uhr gedreht - ist es wirklich schon so spaet>C:\script\zeitvergleich\serverzeitfehler.txt
:ok
echo
pause
del C:\script\zeitvergleich\*.log
Für weitere Fehlerabfragen bist du selber *lach* zuständig und dass die ganze Choose ebbes krümmer geschrieben ist - ich.
u.a auch der, dass das Script um ~ 15.00 nicht genau ist.
Gruß
Servus,
ich hab das auf deutschen Systemen probiert.
schau mal in beiden serverx.log - ob da "sinngemäß"
Gruß
edit: das ist die Ausgabe bei zwei englischen Servern:
Und bitte mach aus dem Pings jeweils ein
ich hab das auf deutschen Systemen probiert.
schau mal in beiden serverx.log - ob da "sinngemäß"
hh:mm
drin steht...Gruß
edit: das ist die Ausgabe bei zwei englischen Servern:
Und bitte mach aus dem Pings jeweils ein
ping -n 1 server - denn mit den 3 Pings dazwischen - ist "zuviel" Latenz drin..
C:\script\zeitvergleich>if not exist C:\script\zeitvergleich\server1.log if not
exist C:\script\zeitvergleich\server2.log goto badboysdontcry
C:\script\zeitvergleich>for /F "tokens=7,9" %i in ('find "\" C:\script\zeitvergl
eich\server1.log') do echo %i 1>C:\script\zeitvergleich\servertime1.log
C:\script\zeitvergleich>echo 10:38 1>C:\script\zeitvergleich\servertime1.log
C:\script\zeitvergleich>for /F "tokens=7,9" %i in ('find "\" C:\script\zeitvergl
eich\server2.log') do echo %i 1>C:\script\zeitvergleich\servertime2.log
C:\script\zeitvergleich>echo 10:39 1>C:\script\zeitvergleich\servertime2.log
C:\script\zeitvergleich>for /F "tokens=1,2 delims=:" %i in (C:\script\zeitvergle
ich\servertime1.log) do set "s1=%i%j"
C:\script\zeitvergleich>set "s1=1038"
C:\script\zeitvergleich>for /F "tokens=1,2 delims=:" %i in (C:\script\zeitvergle
ich\servertime2.log) do set "s2=%i%j"
C:\script\zeitvergleich>set "s2=1039"
C:\script\zeitvergleich>if 1038 EQU 1039 goto ok
C:\script\zeitvergleich>if 1038 GTR 1039 set /a diff=1038-1039
C:\script\zeitvergleich>if 1038 LSS 1039 set /a diff=1039-1038
C:\script\zeitvergleich>if 1 GTR 40 set s1 | findstr ".5." && set /a diff-=4
0
C:\script\zeitvergleich>if 1 GTR 40 set s2 | findstr ".5." && set /a diff-=4
0
C:\script\zeitvergleich>if 1 LEQ 5 goto ok
Poste doch auch mal deinen Inhalt von...
Wobei die beiden "jetzt" - zur AM Zeit ein deutscher und ein englischer war.
Und ich ein paar Pings dazwischen laufen liess, um einen unterschied zu erzwingen, ohne die log files per hand zu verändern.
server1.log
Aktuelle Zeit auf \\xxxx ist 10/29/2009 10:46 AM.
Der Befehl wurde erfolgreich ausgefhrt.
server2.log
Aktuelle Zeit auf \\yyyyy ist 10/29/2009 10:52 AM.
Der Befehl wurde erfolgreich ausgefhrt.
servertime1.log
10:46
servertime2.log
10:52
Wobei die beiden "jetzt" - zur AM Zeit ein deutscher und ein englischer war.
Und ich ein paar Pings dazwischen laufen liess, um einen unterschied zu erzwingen, ohne die log files per hand zu verändern.
Könntest Du mir wohl noch die genaue Dauer dieser "40" deuten?
das ist eine Nacht und Nebeleingebung meinerseits
1203-1158 (wären ja genau deine 5 minuten) - aber die differenz ist 45.
45-40 wären 5
Und damit wenigstens einigermaßen sichergestellt ist, das eine 5 drin ist - wobei ich das auch genauer in den minuten hätte suchen können - muß nach dem check
if %diff% gtr 40
einset s1 |findstr ".5." &&
drin sein.Wobei - wenn ich mir das konstrukt heute ansehe - würd ichs anders machen - ich sehs nur als proof of konzept - aber (nicht wirklich) einen Sinn - den ich brauchen könnte - und das mit dem Sinn für einen selber -ist auch ein Punkt für mich - um hier Probleme zu lösen.
Gruß
Hallo Timo, Hallo Simon,
da bin ich erst wieder.
Ich wollte doch aus Timo's Script folgendes machen heute morgen:
Leider war ich den ganzen Tag unterwegs.
Will das erst mal schnell posten und dann lese ich mir den Rest auch noch durch.
Ps.: Hatte wenig Zeit zum Testen. Sollte aber auf Windowsserven (bei Uhrzeitformat hh:mm) funktionieren. Ansonsten ist dies anzupassen.
Bis später. 's Telefon!
Gruß
Tsuki
da bin ich erst wieder.
Ich wollte doch aus Timo's Script folgendes machen heute morgen:
@Set "Server1=\\Server1"
@Set "Server2=\\Server2"
@For /F "tokens=2 delims=:" %%i in ('net time ^ %Server1%') do @Set "InfoA=%%i"
@For /F "tokens=2 delims=:" %%i in ('net time ^ %Server2%') do @Set "InfoB=%%i"
@IF /i %InfoA:~0,2% == %InfoB:~0,2% goto NOP
@IF /i %InfoA:~0,2% gtr %InfoB:~0,2% set /a diff=%InfoA:~0,2%-%InfoB:~0,2%
@IF /i %InfoA:~0,2% lss %InfoB:~0,2% set /a diff=%InfoB:~0,2%-%InfoA:~0,2%
@IF /i %diff% gtr 50 set /a diff=60-diff
@IF /i %diff% leq 5 goto NOP
Net Time %Server1% /SET /q
:NOP
pause
Will das erst mal schnell posten und dann lese ich mir den Rest auch noch durch.
Ps.: Hatte wenig Zeit zum Testen. Sollte aber auf Windowsserven (bei Uhrzeitformat hh:mm) funktionieren. Ansonsten ist dies anzupassen.
Bis später. 's Telefon!
Gruß
Tsuki
So, jetzt konnte ich schnell mal über alles hinwegfliegen
@Timo,
wir hatten doch den Deal gestern Nacht, dass ich die Fehler wech mach.
Denke, ist mir gelungen.
Auch wenn ich vom VBS abgekommen bin und beim Batchen gelandet bin - wo ich eigentlich noch ein Greenhorn drin bin!
Aber du hast dich bestens an deine Abmachung gehalten
Nun mal wieder Ernst.
Ich habe meinen Script schnell mal auf zwei XP-Maschinen getestet.
Man muss schon Adminrechte auf beiden haben und die Urhzeitformate sollten stimmen, damit das Token funktionert. Sonst rechnen wir am Ende noch Äpfel mit Birnen zusammen und bekommen als Ergebnis Mischobst
@simon
was ist denn jetzt der Stand deiner Dinge in der Schweiz? Was machen die Uhren?
Gruß
TSuki
@Timo,
wir hatten doch den Deal gestern Nacht, dass ich die Fehler wech mach.
Denke, ist mir gelungen.
Auch wenn ich vom VBS abgekommen bin und beim Batchen gelandet bin - wo ich eigentlich noch ein Greenhorn drin bin!
Aber du hast dich bestens an deine Abmachung gehalten
Nun mal wieder Ernst.
Ich habe meinen Script schnell mal auf zwei XP-Maschinen getestet.
Man muss schon Adminrechte auf beiden haben und die Urhzeitformate sollten stimmen, damit das Token funktionert. Sonst rechnen wir am Ende noch Äpfel mit Birnen zusammen und bekommen als Ergebnis Mischobst
@simon
was ist denn jetzt der Stand deiner Dinge in der Schweiz? Was machen die Uhren?
Gruß
TSuki
Servus,
"eigentlich" lief mein Script damals, als ich es geschrieben habe - aber Tsuki hat sich bedeutend mehr Mühe gegeben , das auch in Schönschrift neuzuzimmern.
Poste doch mal deinen Output - dann kann ich mir das gerne nochmal ansehen.
Gruß
"eigentlich" lief mein Script damals, als ich es geschrieben habe - aber Tsuki hat sich bedeutend mehr Mühe gegeben , das auch in Schönschrift neuzuzimmern.
Poste doch mal deinen Output - dann kann ich mir das gerne nochmal ansehen.
Gruß
Servus,
schau dir mal "logisch" die Zeile 16 ff an - er "muß" bei deiner Logik immer bei notok vorbei, weil es der nächste Schritt ist...
oder so:
so passt dann alles, denn nur wenn C:\serverzeit\serverzeitfehler.txt vorhanden ist - Blattet er... dann halt den Rest "umstellen"
Egal wie - das passt alles.
Gruß
schau dir mal "logisch" die Zeile 16 ff an - er "muß" bei deiner Logik immer bei notok vorbei, weil es der nächste Schritt ist...
ping -n 1 sXXXX1 && net time \\sXXXX1>C:\serverzeit\server1.log
ping -n 1 sXXXX2 && net time \\sXXXX2>C:\serverzeit\server2.log
Set /p ersteZeile1=<C:\serverzeit\server1.log
echo %ersteZeile1%>>C:\serverzeit\logdatei.txt
Set /p ersteZeile2=<C:\serverzeit\server2.log
echo %ersteZeile2%>>C:\serverzeit\logdatei.txt
for /f "tokens=7,9" %%i in ('find "\" C:\serverzeit\server1.log') do echo %%i>C:\serverzeit\servertime1.log
for /f "tokens=7,9" %%i in ('find "\" C:\serverzeit\server2.log') do echo %%i>C:\serverzeit\servertime2.log
for /f "tokens=1,2 delims=:" %%i in (C:\serverzeit\servertime1.log) do set "s1=%%i%%j"
for /f "tokens=1,2 delims=:" %%i in (C:\serverzeit\servertime2.log) do set "s2=%%i%%j"
if %s1% equ %s2% goto ok
if %s1% gtr %s2% set /a diff=%s1%-%s2%
if %s1% lss %s2% set /a diff=%s2%-%s1%
if %diff% gtr 40 set s1 |findstr ".5." && set /a diff-=40
if %diff% gtr 40 set s2 |findstr ".5." && set /a diff-=40
if %diff% leq 5 goto notok
rem Problem ist hier
goto ok
:notok
echo Zeitdifferenz zwischen SXXXX1 und SXXXX2 ist %diff% Minuten>C:\serverzeit\serverzeitfehler.txt
:ok
del C:\serverzeit\*.log
if exist C:\serverzeit\serverzeitfehler.txt goto blat
if not exist C:\serverzeit\serverzeitfehler.txt goto eof
:blat
blat.exe C:\serverzeit\serverzeitfehler.txt -to YYYY@YYYY.ch -subject "Zeitdifferenz zwischen SXXXX1 und SXXXX2" -server ZZZZ.ZZZ.ZZZ -q
del C:\serverzeit\serverzeitfehler.txt
:end
oder so:
if %diff% leq 5 echo Zeitdifferenz zwischen SXXXX1 und SXXXX2 ist %diff% Minuten>C:\serverzeit\serverzeitfehler.txt
if exist C:\serverzeit\serverzeitfehler.txt blat.exe C:\serverzeit\serverzeitfehler.txt -to YYYY@YYYY.ch -subject "Zeitdifferenz zwischen SXXXX1 und SXXXX2" -server ZZZZ.ZZZ.ZZZ -q
so passt dann alles, denn nur wenn C:\serverzeit\serverzeitfehler.txt vorhanden ist - Blattet er... dann halt den Rest "umstellen"
Egal wie - das passt alles.
Gruß
Zitat von @SimonPeter:
Hallo Timo
Danke schön. Allerdings löst das das Problem nicht.
Wenn keine Differenz, springt er bei Zeile 11 nach "ok"
jupp - aber es sollte ja auch 5 minuten als noch akzeptabel durchgehen...Hallo Timo
Danke schön. Allerdings löst das das Problem nicht.
Wenn keine Differenz, springt er bei Zeile 11 nach "ok"
Mir ist jetzt aber Zeile 16 aufgefallen: Müsste da nicht ein "gtr" statt "leq" stehen?
..Ich möchte ja, dass er meldet, wenn die Differenz grösser als 5 Minuten ist.
Was meinst Du?
Das ich grade an ner Firmeninternen Baustelle grabe...
Gruss
Simon
PS Deine zweite Variante ist natürlich wesentlich schlanker als mein klobiges Konstrukt...
Gruß