none
Wait-Event und Test-Connection verknüpfen RRS feed

  • Frage

  • Hallo liebes Forum,

    Ich bin auf der Suche nach einer Lösung für folgendes Problem: Ich möchte mit Test connection einen Rechner im Netzwerk anpingen, dann nachdem der Ping geschickt wurde solange warten, bis die Antwort kommt, dass das Paket ankam um dann das nächste Paket loszuschicken. Es geht im großen und ganzen darum Timeout Zeiten zu messen, wenn ich das Lankabel ziehe. Hauptproblem ist nun, dass ich beim wait-event das Attribut sourceIdentifier nicht verstehe, aber das Gefühl habe, dass das die Lösung sein könnte.

    Wie kann ich das umsetzen?

     

    Gruß

    Simon

    Donnerstag, 9. Juni 2011 14:27

Antworten

  • Versuch es mal so:

    $target = "myserver"
    $start = 0
    $count = 0

    ping $target -t | foreach-object{ $count++ if ($count -gt 2){ if ( (!($_ -match "Antwort")) -and ($start -ne 1) ) { write-host "Starte Messung..." $a = (get-date) $start = 1 } if (( $start -eq 1) -and ($_ -match "Antwort")){ $b = (get-date) - $a write-host "Zeit:" $b $start = 0} } }

    Das Skript misst die Zeit zwischen dem ersten Auftreten von "Zeitüberschreitung der Anforderung" und dem nächsten "Antwort von...". Ich habe Ping benutzt, da es im Gegensatzt zu test-connection auch bei Nichterreichbarkeit ein verwertbares Ergebnis liefert.

    Grundsätzlich ist die Methode aber ziemlich ungenau, da du ja Zeitverzögerungen bei den Ping-Antworten hast.

    Grüße, Denniver


    http://bytecookie.wordpress.com/



    Dienstag, 21. Juni 2011 16:43
    Moderator

Alle Antworten

  • Hallo Simon,

    mir ist weder klar was du genau messen möchtest, noch warum du Events benutzen willst, wo doch die Ergebnisse bei Test-Connection schön nach der Reihe eintrudeln und weiterverarbeitet werden können. Vielleicht kannst du das nochmal genauer erläutern. Poste doch bitte auch mal dein bisheriges Skript.

    Grüße, Denniver


    http://bytecookie.wordpress.com/
    Freitag, 10. Juni 2011 16:39
    Moderator
  • Hi,

    ich habs jetzt ein bisschen umgestellt und es sieht folgendermaßen aus:

    $now = get-date -format yyyy_MM_dd_hh_mm_ss
    new-item $pwd\$now.txt -type file 
    #$pings = test-connection 172.17.23.100 -count 10
    $max
    $nextValue
    for ($i = 0; $i -lt 30; $i++) {
    	wait-event -timeout 1
    	echo $i
    	$nextValue = (test-connection 172.17.23.100 -count 1).responseTime
    	if ($max -lt $nextValue) {
    		$max = $nextValue
    	}
    }
    #$pings | format-table Address, ProtocolAddress, ResponseTime | out-file $pwd\$now.txt
    add-content $pwd\$now.txt "Maximaler Wert $max"
    


    Leider hab ich gerade keine Zeit mehr, aber es funktioniert nicht so, wie ich es gerne hätte =/ Wie gesagt, ich würde mir gerne die Zeit ausgeben lassen, die die beiden Rechner nicht verbunden waren. Ich möchte im Endeffekt sehen,wie lange meine virtuelle Maschine braucht um sich zu erholen,wenn einer der beiden redundanten Rechner per Netzwerkkabel entfernt wird.

    Gruß

    Simon

    Donnerstag, 16. Juni 2011 13:51
  • Versuch es mal so:

    $target = "myserver"
    $start = 0
    $count = 0

    ping $target -t | foreach-object{ $count++ if ($count -gt 2){ if ( (!($_ -match "Antwort")) -and ($start -ne 1) ) { write-host "Starte Messung..." $a = (get-date) $start = 1 } if (( $start -eq 1) -and ($_ -match "Antwort")){ $b = (get-date) - $a write-host "Zeit:" $b $start = 0} } }

    Das Skript misst die Zeit zwischen dem ersten Auftreten von "Zeitüberschreitung der Anforderung" und dem nächsten "Antwort von...". Ich habe Ping benutzt, da es im Gegensatzt zu test-connection auch bei Nichterreichbarkeit ein verwertbares Ergebnis liefert.

    Grundsätzlich ist die Methode aber ziemlich ungenau, da du ja Zeitverzögerungen bei den Ping-Antworten hast.

    Grüße, Denniver


    http://bytecookie.wordpress.com/



    Dienstag, 21. Juni 2011 16:43
    Moderator
  • Das sieht schon mal ziemlich gut aus,aber irgendwie funktioniert es bei mir nicht,wie ich das gehofft habe. Ich habe noch ein bisschen was geändert, aus der 2. if Abfrage eine elseif gemacht, den startwert als boolean gesetzt, aber nichts strukturänderndes. Wie auch immer, wenn ich die Netzwerkkabel ziehe, zählt die Schleife gemütlich weiter. Pro Ping geht er entweder in die obere If-Abfrage und im nächsten Ping in die Untere. Das wechselt dann immer so durch, ohne Pingzeiten aufzuzählen.

     

    p.s. ich hab ein englisches Windows, aber habe den String "Antwort" durch "Reply" ersetzt, daran kann es also nicht liegen...

    Dienstag, 5. Juli 2011 13:19
  • Das Skript funktioniert, ich hab es gerade nochmal getestet. Wichtig ist nur, das beim Skriptstart der Ping erstmal eine Antwort erhält und du dann erst das Kabel ziehst. Aber die ganze Nummer ist -wie bereits erwähnt- wirklich derart ungenau, das ich an deiner Stelle einfach eine Stoppuhr nehmen würde. :)

    Wenn du es aber unbedingt per Ping machen möchtest, nimm nochmal das von mir gepostete Skript, genau so wie es ist und ersetze einfach die beiden "Antwort" durch "Reply", sonst bitte nichts. Und dann teste es nochmal.


    Grüße, Denniver


    http://bytecookie.wordpress.com/

    Dienstag, 5. Juli 2011 23:48
    Moderator