Mehrere Server anpingen positive und negative Ergebnis in Datei schreiben

Mitglied: tommhii

tommhii (Level 1) - Jetzt verbinden

24.09.2020 um 14:40 Uhr, 865 Aufrufe, 27 Kommentare, 1 Danke

Hallo ich hab eine Frage ich habe in einer Liste mehrere Server eingetragen die ich per batch anpingen will. Das funktioniert so weit nur will ich nach 2 verschieden Begriffen suchen und das was zu trifft in eine Datei schreiben.

echo off & setlocal enabledelayedexpansion
set aktdatum=%date:~6,4%%date:~3,2%%date:~0,2%
set aktzeit=%time:~0,2%%time:~3,2%%time:~6,2%
for /f %%i in (ip.txt) do (ping -n 1 %%i|find /i "TTL" >>ergebnis%aktdatum%-%aktzeit%.txt)
if errorlevel 1 goto nichtpingbar

hier frage ich nach TTL ab aber ich will noch nach einen zweiten Begriff abfragen und in die Liste eintragen lassen.
der 2. Begriff soll für nicht erreichbare Server sein.

VG Tommhi
27 Antworten
Mitglied: Doskias
24.09.2020, aktualisiert um 15:23 Uhr
Moin

also wenn ich dich, trotz der fehlenden Satzzeichen richtig verstanden habe, dann willst du abhängig vom ping entweder den einen oder den anderen Wert in eine Datei schreiben. Was ich noch nicht ganz verstanden habe ist, was du in die Datei schreiben willst. Ich persönlich würde es via PowerShell lösen und zwar wie folgt:

Gruß
Doskias
Bitte warten ..
Mitglied: colinardo
24.09.2020, aktualisiert um 16:34 Uhr
Moin.
Ich persönlich würde es via PowerShell lösen und zwar wie folgt:
Test-Connection ist so was von lahm vor allem wenn nichts am Ende reagiert, und dann noch nicht mal parallelisiert . Das lässt sich mindestens um dem Faktor 10000 beschleunigen , guckst du...
Das Zeigt dir erst mal nur alle Hosts und deren Details in einem Gridview an.
Um das ganze in eine CSV-Datei zu schreiben einfach die letzte Zeile austauschen durch (Ausgabepfad natürlich anpassen)
Dateiname aus der die Hosts geladen werden in vorletzter Zeile anpassen.

screenshot - Klicke auf das Bild, um es zu vergrößern


Grüße Uwe
Bitte warten ..
Mitglied: cs-websystem
24.09.2020 um 15:34 Uhr
GGf hilft dir mein Skript weiter auch wenn ich hierzu noch fragen hier gestellt habe. ich denke für dich könnte es passen

https://administrator.de/content/detail.php?id=607257#comment-1481179
Bitte warten ..
Mitglied: Doskias
24.09.2020 um 15:53 Uhr
Ich sag mal so:

Wir sind die Admins. Ihr Skript wird unserer Sammlung hinzugefügt. Wiederstand ist zwecklos.
Bitte warten ..
Mitglied: tommhii
24.09.2020 um 16:06 Uhr
Danke erstmal an alle für die schnelle Antwort.
@Uwe Dein Powershell script sieht interessant aus, leider hab ich mit Powershell noch nicht gearbeitet , vielleicht kannst Du mir ja mal einen Tip geben wie man das Script unter Powershell anlegt. Ich hätte das jetzt als txt Datei gespeichert und dann als ps1 umbenannt.
ist das so okay
Bitte warten ..
Mitglied: colinardo
24.09.2020, aktualisiert um 16:13 Uhr
Da ziehe ich wie immer mein vorbereitetes Erklärbär-Schnippselchen

Anleitung: Wie starte ich Powershell-Scripte

  • Zuerst speichert man den Code in einer Textdatei mit der Endung .ps1.
  • Wenn man zum ersten mal Powershell-Scripte ausführt, musst man einmalig vorher noch das Ausführen von Scripten im User-Account freischalten. Dazu öffnet man eineadministrative Powershell-Konsole und gibt dort den Befehl Set-ExecutionPolicy RemoteSigned -Force ein. Um diese Policy für alle User auf dem Rechner zu setzen muss man diesen Befehl in einer Powershell-Konsole mit Admin-Rechten starten. Noch ein Hinweis für 64-Bit-Systeme: Hier sollte sowohl für die 32bit und 64Bit Variante der Powershell die Policy in einer Admin-Konsole gesetzt werden: Set-ExecutionPolicy RemoteSigned -Force; start-job { Set-ExecutionPolicy RemoteSigned -Force } -RunAs32
  • Jetzt kann das Powershell-Script wie weiter unten erläutert in einer Powershell-Konsole oder aus einer CMD-Fenster heraus ausgeführt werden. Wer lieber mit der Maus arbeitet macht einen Rechtsklick auf die Script-Datei und wählt: Mit Powershell ausführen.
  • Alternativ lässt sich ein Script auch ohne das globale Ändern der ExecutionPolicy ausführen indem man die Policy als Parameter auf der Kommandozeile mitgibt:
Starten eines Scriptes in einer Powershell-Konsole
Immer den kompletten Pfad zum Script angeben, und wenn er Leerzeichen beinhaltet in Anführungszeichen einschließen:
Liegt das Script im selben Verzeichnis in dem man sich gerade befindet, kann man es auch so abkürzen:
Starten von PS-Scripten aus Batch und Kommandozeilen heraus:
Hier gibt es unterschiedliche Methoden, je nach Anforderungen gibt es hier einige Besonderheiten vor allem bei Leerzeichen in Pfaden zu beachten!
Der einfachste Aufruf sieht hier so aus:
Wenn man dem Script Parameter übergeben möchte:
Wenn man "benannte" Parameter übergeben möchte (die einfachen Hochkommas um den Scriptpfad werden benötigt wenn er Leerzeichen beinhaltet):
Man kann auch mehrere Scripte hintereinander ausführen lassen:
Weitere Parameter zeigt einem ein powershell -? in einer Konsole an.
Starten von PS-Scripten in der Aufgabenplanung (Taskplaner)
In der jeweiligen Aktion unter "Programm/Script" trägt man powershell.exe ein und unter "Argumente hinzufügen (optional)" trägt man wie oben geschrieben alles was hinter powershell.exe kommt ein - also z.B. -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"

Und für Anfänger die PS Profis werden möchten empfehle ich folgende Lektüre


Powershell Leitfaden für Anfänger

Pflichtlektüre

Erweiterte Grundlagen

Zusätzliche Ressourcen

Bitte warten ..
Mitglied: tommhii
24.09.2020 um 16:22 Uhr
Danke für die Erklärung super.
Ich hab jetzt Dein Script als ps1 abgelegt wenn ich es starte öffnet sich kurz ein fenster und geht wieder zu. Ich habe in meiner Datei keine Ip Adressen sondern 8stellige Rechner namen ist das ein Problem?
Bitte warten ..
Mitglied: colinardo
24.09.2020, aktualisiert um 16:27 Uhr
Zitat von tommhii:
Ich hab jetzt Dein Script als ps1 abgelegt wenn ich es starte öffnet sich kurz ein fenster und geht wieder zu. Ich habe in meiner Datei keine Ip Adressen sondern 8stellige Rechner namen ist das ein Problem?
Nein ist kein Problem du kannst Hostnamen oder IP Adressen benutzen das der Funktion egal. Hast du denn im Skript den Pfad zu deiner Textdatei angepasst, und auch den Pfad zur Ausgabedatei? Hast du die Executionpolicy angepasst oder das Skript mit -ExecutionPolicy ByPass aufgerufen? Deine Powershell ist aktuell? Das Skript erwartet die Namen untereinander stehend.
Starte es einfach mal in der Powershell ISE Umgebung und poste einen Screenshot.
Bitte warten ..
Mitglied: tommhii
24.09.2020 um 16:34 Uhr
Pfad zur Eingabe Datei habe ich angepasst , Namen stehen untereinander, gestartet mit Powershell ISE, er zeigt mir nicht das gridview an bzw. pop ganz kurz ein Fenster auf und geht wieder zu. Mit Ausgabe Datei meinst du sicher die csv Datei, das habe ich noch nicht angelegt.
Bitte warten ..
Mitglied: colinardo
24.09.2020, aktualisiert um 16:43 Uhr
Welches OS? Welche PS Version?
Wenn noch auf W7 /2012R2 etc. bitte Management-Framework Update machen.

Geht hier einwandfrei.
Bitte warten ..
Mitglied: tommhii
24.09.2020 um 16:39 Uhr
win 2012 R2
Bitte warten ..
Mitglied: colinardo
24.09.2020, aktualisiert um 16:42 Uhr
Auch dort kein Problem mit aktuellem Management Framework

Was gibt dier ein

$psversiontable

in der Konsole aus?

Wen du natürlich die letzte Zeile bereits wie oben geschrieben ausgetauscht hast kommt selbstredend keine Ausgabe denn die Daten werden dann ja ohne Umweg in die Datei geschrieben ohne irgendwelche Ausgabe.
Bitte warten ..
Mitglied: tommhii
24.09.2020 um 16:46 Uhr
PSVersion 4.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.42000
BuildVersion 6.3.9600.19170
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion 2.2
die letzte Zeile habe ich nicht geändert er schreibt irgendwas aus wie 2 von Complet und viele 00000
Bitte warten ..
Mitglied: tommhii
24.09.2020 um 16:48 Uhr
also da steht Ping total auf 3 Host
00000000000000000000000000000000000000000000000000000000000000000000000000000
2 von 3 complet
Bitte warten ..
Mitglied: colinardo
24.09.2020, aktualisiert um 16:52 Uhr
Deine PS is way too old ...
https://www.microsoft.com/en-us/download/details.aspx?id=54616
also da steht Ping total auf 3 Host
00000000000000000000000000000000000000000000000000000000000000000000000000000
2 von 3 complet
Das ist die Progress-Anzeige, die kannst du mit dem Weglassen des Parameters -showprogress in der letzen Zeile ausblenden.
Bitte warten ..
Mitglied: tommhii
24.09.2020 um 16:55 Uhr
das heisst so wie bei Dir die Ergebnis anzeige kommt bekomme ich nicht
Bitte warten ..
Mitglied: colinardo
24.09.2020, aktualisiert um 17:00 Uhr
Zitat von tommhii:

das heisst so wie bei Dir die Ergebnis anzeige kommt bekomme ich nicht
Entweder Management Framework Update fahren und deine Textdatei überprüfen (Encoding). Geht wie gesagt einwandfrei wenn du das beachtest.

Hier Live-Test auf einem Server 2012 R2 mit PS 5.1

screenshot - Klicke auf das Bild, um es zu vergrößern
Bitte warten ..
Mitglied: 145916
24.09.2020, aktualisiert um 17:04 Uhr
Habs hier auch mal getestet, läuft ohne Probleme mit PS 5.1, nur zur Info an den TO. Und das raaaasend schnell 255 Hosts innerhalb von nicht mal einer Sekunde...
Bitte warten ..
Mitglied: tommhii
24.09.2020 um 17:04 Uhr
ja danke dann muss ich das wohl doch auf dos batch probieren. aber vielleicht kannst Du mir da weiterhelfen.
wie muss ich diese Zeile ändern wenn ich noch nach einen 2. Begriff suchen tu
for /f %%i in (ip.txt) do (ping -n 1 %%i|find /i "TTL" >>ergebnis%aktdatum%-%aktzeit%.txt)
das bräuchte ich noch --> |find /i "UN"
Bitte warten ..
Mitglied: 145916
24.09.2020, aktualisiert um 17:30 Uhr
das bräuchte ich noch --> |find /i "UN"
Das ist überflüssig da steht ja eh nichts nutzbares drin, einfach eine oder Bedingung dran pappen und fertig:
Aber sowat noch mit Batch zu machen ist echt 80zger Jahre, da muss man a gleich den Käfer wieder aus der Scheune holen .
Bitte warten ..
Mitglied: colinardo
24.09.2020, aktualisiert 25.09.2020
Wenn's unbedingt Batch sein muss kannst du es bspw. so machen ...
Das Powershell Skript kannst du natürlich auch vollkommen vereinfachen wenn es nicht auf Zeit ankommt, das hat auch keine besonderen Anforderungen ans Framework.
Jetzt hast du wohl oder übel die Qual der Wahl.

Viel Erfolg
Grüße Uwe
Bitte warten ..
Mitglied: lcer00
24.09.2020 um 21:07 Uhr
Hallo,

falls der TO eigentlich nur ein paar hosts überwachen will, sei neben Powershell darauf hingewiesen, dass man beispielsweise mit PRTG 100 freie Sensoren nutzen kann, die alle fein säuberlich notieren.

Grüße

lcer
Bitte warten ..
Mitglied: tommhii
25.09.2020, aktualisiert um 07:21 Uhr
Hallo Uwe , das batch gefällt mir gut, nur fehlt mir in der Ausgabe Datei der Server der nicht ereichbar ist.
Powershell werd ich dann auch nochmal testen.

VG
Tommhi
Bitte warten ..
Mitglied: colinardo
25.09.2020, aktualisiert um 07:41 Uhr
Zitat von tommhii:

Hallo Uwe , das batch gefällt mir gut, nur fehlt mir in der Ausgabe Datei der Server der nicht ereichbar ist.
Doch, der ist mit drin. (In Zeile 10 wird dieser für jeden Host hinter dem String "HOST:" in das Logfile geschrieben)
Bitte warten ..
Mitglied: tommhii
25.09.2020 um 08:24 Uhr
Hallo Uwe
ich habe in meiner Liste 3 Server davon sind 2 oben. in der Liste zeigt er mir auch nur die 2 an, den 3. der runtergefahren ist zeigt er nicht an.

hier die Ausgabe
25.09.2020 8:14:11,83 | HOST: T1122380 | Antwort von 10.XX.XX.64: Bytes=32 Zeit<1ms TTL=126
25.09.2020 8:14:11,83 | HOST: T1198mno | Antwort von 10.XX.XX.20: Bytes=32 Zeit=1ms TTL=128

das Powershell hab ich auch mal probiert aber das Fenster geht kurz auf aber zu kurz kann man das auch in eine Datei schreiben.

VG

Tommhi
Bitte warten ..
Mitglied: colinardo
25.09.2020, aktualisiert um 08:47 Uhr
Zitat von tommhii:

Hallo Uwe
ich habe in meiner Liste 3 Server davon sind 2 oben. in der Liste zeigt er mir auch nur die 2 an, den 3. der runtergefahren ist zeigt er nicht an.
Nö, geht auch hier testweise einwandfrei. Bei dir scheint wohl überhaupt nix zu laufen 😜.
das Powershell hab ich auch mal probiert aber das Fenster geht kurz auf aber zu kurz kann man das auch in eine Datei schreiben.
Ja, siehe oben , hänge einfach ein export-csv an die Pipe. Man oh man der Server gehört mal ordentlich aufgesetzt 😉.

So bin hier nun raus, schon genug Zeit mit diesen Kinderspielchen verplempert.

Grüße Uwe
Bitte warten ..
Mitglied: tommhii
25.09.2020 um 09:06 Uhr
also das bei mir nix läuft kann man so nicht sagen
also die batch eaglefinder weisst mir alle 3 server aus. Das versteh ich jetzt echt nicht das es bei Dir geht hab nochmal alles überprüft kann aber keinen fehler finden. (

VG
Tommhi
Bitte warten ..
Heiß diskutierte Inhalte
Router & Routing
Wireguard VPN (oder andere alternative) - Kompletter Traffic routen
gelöst KodaCHFrageRouter & Routing15 Kommentare

Guten Morgen Ich habe bisher mit OpenVPN und mit Wireguard VPN einige Tests gemacht. OpenVPN (Kostenlose Version): Hier habe ...

Server-Hardware
Konfiguration und Stromverbrauch ML350 Gen10
kosta88FrageServer-Hardware13 Kommentare

Hallo, ich versuche mal zu berechnen was ein ML350 verbrauchen würde. Ich weiß dass es von der Konfiguration und ...

Server
Kein Zugriff auf NAS bei DS Lite
martingerdesFrageServer11 Kommentare

Hallo liebe Gemeinde, dieses Thema kennen wahrscheinlich viele und ich selbst habe schon viele Forenbeiträge zu diesem Thema gelesen. ...

Windows Server
Hyper-V Server vs Datacenter?
holliknolliFrageWindows Server10 Kommentare

Hallo, hat jemand Erfahrung mit dem - kostenlosen - Hyper-V-Server? Ich meine, warum teure Lizenzen für Datacenter zahlen, wenn ...

Grafikkarten & Monitore
Grafikkarte kaputt? Hier muss noch etwas hin, weil der andere Titel schon vergeben ist :)
Sir.classicFrageGrafikkarten & Monitore9 Kommentare

Hallo an alle, ich habe einen selbst gebauten PC und mein Problem ist, dass meine Monitore regelmäßig (alle 3h) ...

LAN, WAN, Wireless
Spanning Tree Probleme
predator66FrageLAN, WAN, Wireless9 Kommentare

Hallo, wir haben hier eigenartige Spanningtree Probleme, die wir zur Zeit nicht gelöst bekommen: New Root Port MAC ist ...

Ähnliche Inhalte
Windows Server

Freigabe führt nicht zur Schreib-Berechtigung

gelöst ElmaCxFrageWindows Server11 Kommentare

Hallo miteinander, ich bin seit 2 Tagen an einer Berechtigungs Problematik zu Gange, bei welcher ich die Lösung nicht ...

Server

Freenas schlechte Schreib Performance bei NFS

janosch12FrageServer17 Kommentare

Hallo, ich habe momentan das Problem das die Performance bei NFS zu wünschen über lässt Schreiben max 100 Mbit/s ...

Datenbanken

SQL Mail nach Ergebnis

MCAJ10FrageDatenbanken5 Kommentare

Hallo Zusammen, ich habe im SQL eine Sicht erstellt. Das dort aufgeführte Ergebnis würde ich gern einer Prüfung unterziehen; ...

Outlook & Mail

Outlook Indizierung ohne Ergebnis

YannoschFrageOutlook & Mail4 Kommentare

Hallo zusammen, ich habe hier bei uns ein sehr seltsames Problem mit unseren Outlook-Clients Outlook 2010 . Bei mittlerweile 5/15 ...

Datenbanken

Entwicklung - Datenbank - Auswertung - Ergebnis

TearsofsunFrageDatenbanken2 Kommentare

Hallo guten Morgen, da das komplettes neuland für mich ist habe ich aktuell selber eine Aufgabenstellung wo ich noch ...

SAN, NAS, DAS

1000 Schreib IOPs zu viel für SQLer ?

gelöst Ex0r2k16FrageSAN, NAS, DAS10 Kommentare

Hallo, ich fahre hier einen virtuellen Standard 48GB RAM MS SQL Server auf nem Server 2012R2. Unser neues ERP ...

Berechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid CloudSmall Business ITSmall Business IT