MaWiTi 3 Geschrieben 12. November 2020 Melden Teilen Geschrieben 12. November 2020 Hallo alle zusammen, Ich habe eine instablie Internetleitung und möchte den genauen Zeitpunkt heraus finden, wann dass die Leitung geht und wann nicht. Vermutlich hängt die Instabilität mit irgend einem Gerät im eigenen Stromnetz zusammen. Darum möchte ich mittels Ping ermitteln, wann das Internet geht und wann nicht. Aber nicht mit Ping /t weil sonst hätte ich millionen von Datenzeilen auszuwerten sondern mit einem kleinen Batch. Habe mir das folgendermassen vorgestellt aber es hat vermutlich einen Fehler auf der Zeile nach rem xy Jedenfalls wird das Kommandozeilenfenster an dieser Stelle ohne weitere Infos geschlossen... Sieht jemand einfach so schnell auf Anhieb was ich falsch mache? Vielen lieben Dank für Hinweise... set vZielA=192.168.1.1 set vZielB=Switch.ch set vLogA=PingCheckA.log set vLogB=PingCheckB.log set PingStatAWrite=0 set PingStatAWriteOnline=0 set PingStatAWriteOffline=0 :StartPing ping %vZielA% echo errorlevel ist: %errorlevel% pause if errorlevel 1 ( pause rem errorlevel ist 1 ping ist fehlgeschlagen. echo Das Ziel %vZielA% ist offline if %PingStatAWriteOffline%==0 ( rem xy Fehler in Folgezeile? echo %vZielA% am %date% um %time% >> %PingCheckA% set PingStatAWriteOffline=1 set PingStatAWriteOnline=0 pause ) else ( rem Log ist geschrieben, nichts ist zu tun. ) pause ) else ( rem errorlevel ist 0, Ping ist ok. echo Server %vZielA% ist online if %PingStatAWriteOnline%==0 ( echo Online am %date% um %time% >> %PingCheckA% set PingStatAWriteOnline=1 set PingStatAWriteOffline=0 ) else ( rem Log ist geschrieben, nichts ist zu tun. ) ) timeout /T 10 goto StartPing pause Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 12. November 2020 Melden Teilen Geschrieben 12. November 2020 Moin, Sowas hab ich mal gebaut: https://www.faq-o-matic.net/2016/06/22/testskript-ist-der-reboot-schon-durch/ Gruß, Nils Zitieren Link zu diesem Kommentar
testperson 1.677 Geschrieben 12. November 2020 Melden Teilen Geschrieben 12. November 2020 Hi, und (ungetestet) auf die Schnelle in PowerShell: $HosttoPing = "example.com" $CurStatus = $true $LastStatus = $null $Date = Get-Date Write-Output $("Start: {0} {1}" -f $Date.ToShortDateString(), $Date.ToShortTimeString()) do{ $CurStatus = Test-Connection -ComputerName $HosttoPing -Count 1 -Quiet if($CurStatus -ne $LastStatus){ $Date = Get-Date switch($CurStatus){ $true{ Write-Output $("Internet: {0} {1}" -f $Date.ToShortDateString(), $Date.ToShortTimeString()) $LastStatus = $true } $false{ Write-Output $("Kein Internet: {0} {1}" -f $Date.ToShortDateString(), $Date.ToShortTimeString()) $LastStatus = $false } } } }while($true) Gruß Jan Zitieren Link zu diesem Kommentar
MaWiTi 3 Geschrieben 12. November 2020 Autor Melden Teilen Geschrieben 12. November 2020 Wow, suppper, Das Teil macht fast genau, was ich möchte... Habe nur eine Korrektur angebracht. Es soll zusätzlich auch in eine Datei schreiben. ABER Jetzt schreibt es nur den letzten Switch in die Datei, also überschreibt, anstatt anzufügen. Muss ich anstatt Out-File etwas anderes nehmen? Zeile 15 und 22... # Original von NielsK $HosttoPing = "example.com" $CurStatus = $true $LastStatus = $null $Date = Get-Date Write-Output $("Start: {0} {1}" -f $Date.ToShortDateString(), $Date.ToShortTimeString()) do{ $CurStatus = Test-Connection -ComputerName $HosttoPing -Count 1 -Quiet if($CurStatus -ne $LastStatus){ $Date = Get-Date switch($CurStatus){ $true{ #Positiv Nachricht ausgeben an Screen und in Datei Write-Output $("Internet-geht: {0} {1}" -f $Date.ToShortDateString() , $Date.ToShortTimeString()) $Date.ToShortDateString() + "-" + $Date.ToShortTimeString() + " Internet ist Ok!" | Out-File InternetStatus01.txt $LastStatus = $true } $false{ #Negativ Nachricht ausgeben an Screen und in Datei Write-Output $("Kein-Internet: {0} {1}" -f $Date.ToShortDateString() , $Date.ToShortTimeString()) $Date.ToShortDateString() + "-" + $Date.ToShortTimeString() + " Internet ist Fail!" | Out-File InternetStatus01.txt $LastStatus = $false } } } }while($true) Viele dankende Grüsse Markus Oh, sorry, hab's gefunden, einfach -Append an die Zeile anhängen... und schon tut Dein Script ganz genau was ich will... Also so: $Date.ToShortDateString() + "-" + $Date.ToShortTimeString() + " Internet ist Fail!" | Out-File InternetStatus01.txt -Append Hab ganz vielen lieben Dank für dieses Script welches genau macht, was ich will... Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 13. November 2020 Melden Teilen Geschrieben 13. November 2020 Moin, ein wesentlicher Fehler in deinem ursprünglichen Code dürfte gewesen sein, dass %PingCheckA% keinen Wert hat. Damit verlangst du eine ungültige Dateioperation. Sowas passiert, wenn man Variablennamen nur an einer Stelle ändert ... Gruß, Nils Zitieren Link zu diesem Kommentar
MaWiTi 3 Geschrieben 13. November 2020 Autor Melden Teilen Geschrieben 13. November 2020 Guten Morgen Niels, Vielen Dank für die Antwort zum Fehler in meinem Skript. Aber ich kippe dieses von mir geschriebene Skript eh in den Müll. Denn Deines mit dem Loop und dem Switch finde ich so viel besser und so viel besser lesbar, dass ich dankbarer weise Deines einsetze. Es zeigt mir auch sehr gut sowohl am Bildschirm als auch in der LogDatei an was Sache ist. Danke Dir vielmals für Dein Script. Zudem habe ich gelernt wie man mit dem Editor eine ps1 Datei erstellt. Und das finde ich auch viel besser als die Kommandozeile mit dem NotePad... Nur ein kitzekleiner Wunsch bin ich noch am recherchieren und habe noch nichts gefunden. Wie könnte ich innerhalb Deines Do...while eine Zeile einbauen, mit welcher ich immer nach 60 Minuten das ergebnis eines einzigen Ping in die Logdatei schreibe? Im Moment weiss man nicht, wenn das Script über 12 Stunden hinweg keinen Wechsel meldet, ob das Teil überhaupt noch am laufen ist. Es meldet sich im Moment ja nur dann, wenn der Zustand sich ändert. Darum wäre es cool, ich könnte eine Zeile mit einem einzigen Ping einbauen. Viele Grüsse aus dem heute sonnigen Tessin Markus Zitieren Link zu diesem Kommentar
Nobbyaushb 1.471 Geschrieben 13. November 2020 Melden Teilen Geschrieben 13. November 2020 /OT - ich werfe man Monitoring a la PRTG in den Raum bis 100 Sensoren sogar kostenlos OT/ Zitieren Link zu diesem Kommentar
MaWiTi 3 Geschrieben 13. November 2020 Autor Melden Teilen Geschrieben 13. November 2020 Hallo Nobbyaushb, vielen Dank für Dein "Einwurf". Habe mir das auch lange überlegt. und vor vielen Jahren als ich noch in der Netzwerktechnik gearbeitet habe, hatte ich auch mal damit "gespielt". Für mein heutiges Projekt, denke ich, ist es eher ungünstig (Irrtum vorbehalten) Denn ein Notebook steht in einer Ferienwohnung und dort wird vermutet, dass die Internetanbindung wackelig ist. Ich möchte das Überwachen aber von einem anderen Standort aus, nämlich von mir zuhause. Mit dem phantastischen Skript von Niels (danke) schreibe ich ein Log nach OneDrive und kann das von zuhause aus abrufen... Brauche keine Installation und nichts.... Wenn ich mich an damals richtig erinnere, ist PRTG ziemlich aufwändig von der Installation. Und ich erinnere mich nicht mehr, wie ich an die Daten komme, wenn ich hinter einer dynamischen IP stehe... Besten Dank für Deine Hinweise. Viele liebe Grüsse Markus Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 13. November 2020 Melden Teilen Geschrieben 13. November 2020 Moin, das PowerShell-Skript ist nicht von mir. Die Grundidee hatte ich per Batch umgesetzt. Ich bin mir nicht sicher, ob so ein Skript wirklich so dauerhaft laufen und seine Daten in ein OneDrive schreiben sollte. Gedacht ist der Ansatz für kurze Prüfungen. Aber für eine Zeit kann man das vielleicht auch durchgehend tun. Deine Zusatzanforderung würde ich einfach über einen Zähler abbilden. Momentan dürfte das Skript einmal pro Sekunde pingen. Man könnte also in jeder Ausführung einen Zähler um 1 hochsetzen und dann bei 3600 eine Statusmeldung ins Log schreiben und den Zähler zurücksetzen. Sofern die Auflösung des Skripts nicht sekündlich sein soll, wäre noch eine Wartezeit pro Durchlauf denkbar, dann müsste man natürlich den Zähler anpassen. Gruß, Nils Zitieren Link zu diesem Kommentar
testperson 1.677 Geschrieben 13. November 2020 Melden Teilen Geschrieben 13. November 2020 Da wird jemand fremdes einfach mit meinen Federn geschmückt. Tz.. $HosttoPing = "example.com" $LogPath = "InternetStatus01.txt" $CurStatus = $true $LastStatus = $null $Date = Get-Date $Heartbeat = $Date Write-Output $("Start: {0} {1}" -f $Date.ToShortDateString(), $Date.ToShortTimeString()) Out-File -FilePath $LogPath -InputObject $("Start: {0} {1}" -f $Date.ToShortDateString(), $Date.ToShortTimeString()) -Append do{ $CurStatus = Test-Connection -ComputerName $HosttoPing -Count 1 -Quiet $Date = Get-Date if($CurStatus -ne $LastStatus -or $Date -ge $Heartbeat.Second(3600)){ switch($CurStatus){ $true{ Write-Output $("Internet: {0} {1}" -f $Date.ToShortDateString(), $Date.ToShortTimeString()) Out-File -FilePath $LogPath -InputObject $("Start: {0} {1}" -f $Date.ToShortDateString(), $Date.ToShortTimeString()) -Append $LastStatus = $true } $false{ Write-Output $("Kein Internet: {0} {1}" -f $Date.ToShortDateString(), $Date.ToShortTimeString()) Out-File -FilePath $LogPath -InputObject $("Start: {0} {1}" -f $Date.ToShortDateString(), $Date.ToShortTimeString()) -Append $LastStatus = $false } } $Heartbeat = $Date } }while($true) Zitieren Link zu diesem Kommentar
MaWiTi 3 Geschrieben 13. November 2020 Autor Melden Teilen Geschrieben 13. November 2020 (bearbeitet) Sorry TestPerson, es tut mir Leid, Ich war der festen Überzeugung, dass Nils der Autor war. Darum habe ich das auch in meinen Kopf rein geschrieben. Als Nils mir sagte, dass er nicht der Autor ist, habe ich es raus genommen. Ich habe noch ein paar Federn bei mir und ich würde gerne gut machen, was es noch gut zu machen gibt. Darf ich rein schreiben: ******************************* * Original Autor TestPerson * ******************************* Ich möchte auf jeden fall, dass der rechtmässige Autor im Mindesten die Lorbeeren bekommt für dieses aus meiner Sicht für diesen Zweck geniale Script. Herzlichste Grüsse Aus dem tiefsten Süden der Schweiz.... Gruss Markus bearbeitet 13. November 2020 von MaWiTi Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 13. November 2020 Melden Teilen Geschrieben 13. November 2020 Wenn schon korrigieren, dann ganz. Nils schreibt sich ohne e. ;) Zitieren Link zu diesem Kommentar
MaWiTi 3 Geschrieben 13. November 2020 Autor Melden Teilen Geschrieben 13. November 2020 vor einer Stunde schrieb Sunny61: Wenn schon korrigieren, dann ganz. Nils schreibt sich ohne e. ;) Oh, mein Gott... wie peinlich... sorry... dabei meine ich es doch alles nur gut... kann das Universum mir eine Entschuldigung anbieten? Ich meine, immerhin ist heute Freitag der 13. Da kann doch sowas vorkommen, oder? Ok, hebe zweimal E gelöscht... Und zugegeben, der Spruch der am Schwabentor in Schaffhausen zu sehen ist, der stimmt wirklich... Siehe unter http://www.hexerei.ch/tor/ 3 Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 13. November 2020 Melden Teilen Geschrieben 13. November 2020 Moin Ping als zyklisch arbeitende Krücke halte ich nicht für gut. Ich nahm den PRTG Network Monitor. Zitieren Link zu diesem Kommentar
MaWiTi 3 Geschrieben 14. November 2020 Autor Melden Teilen Geschrieben 14. November 2020 (bearbeitet) Guten Morgen Expert Member lefg, ich sehe schon, um Dich zu verstehen, da muss ich erst noch ein paar Jährchen in die Schule... Dennoch vielen Dank für Deine Worte... Smile, Niveau und schlagen mit Erfahrung... muss ich mir merken... Und jetzt mach ich mir ein ProfilBild anstelle des M im Kreis... das ist ja kein hingucken... Schönen Tag alle zusammen... bearbeitet 14. November 2020 von MaWiTi Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.