Hüsi Geschrieben 26. Juli 2004 Teilen Geschrieben 26. Juli 2004 Servus, zur Verwaltung von IP-Adressen bei uns im Segment hab ich eine Liste von Rechnern und möchte diese gern anpingen (schauen, ob der hostname noch aufm dns-Server eingetragen ist). wie kann ich per batch diese Liste von Hostnames anpingen? hostname1 hostname2 hostname3 ... jemand ne idee, wie ich das per batch anpacke?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Mike Lorey Geschrieben 26. Juli 2004 Teilen Geschrieben 26. Juli 2004 Benutze Tokens dafür. FOR /F "tokens=*" %%i IN ([Pfad]Hostname.txt) DO ping %%i Sollte funktionieren, ist aber nicht getestet. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hüsi Geschrieben 26. Juli 2004 Autor Teilen Geschrieben 26. Juli 2004 Benutze Tokens dafür. FOR /F "tokens=*" %%i IN ([Pfad]Hostname.txt) DO ping %%i Sollte funktionieren, ist aber nicht getestet. jo das funktioniert. besten dank. nur was da geschieht versteh ich nicht. hab schonmalhier geschaut und mir die hilfe zu "for" angeschaut, aber schlau werd ich da nicht draus. gibts auch ne einfache erklärung, da ich das ganze vielleicht irgendwann nochmal in anderem zusammenhang nutzen kann?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thombo Geschrieben 26. Juli 2004 Teilen Geschrieben 26. Juli 2004 Eins vorweg: Die Datei Hostname.txt ist folgendermaßen aufgebaut: PC1 PC2 PC3 Anstelle von FOR /F "tokens=*" %%i IN ([Pfad]Hostname.txt) DO ping %%i geht auch FOR /F %%i IN (Hostname.txt) DO ping %%i Also der erste teil des Befehl: FOR /F %%i IN (Hostname.txt) Liest die Einträge in der Datei Hostname.txt einzeln aus, und setzt die Variable %%i mit dem Eintrag in der Hostname.txt das heisst: aus %%i wird dann bei ersten Durchlauf PC1. Die nun gesetzte Variable %%i wird dann an den Zeiten Teil des Befehl übergeben: der zweite Teil ( DO ping %%i) macht dann folgendes: Ping PC1 Et Voila. ------------------------------- Mit Tokens arbeitest du folgendermaßen: Die Hostname.txt ist folgendermaßen aufgebaut PC1 Franz Müller PC2 Hella Hausfrau FOR /F "tokens=1,2" %%i IN (Hostname.txt) DO echo %%i echo %%j DIe erste Variable (%%i) wird mit dem ersten Token (PC1) gesetzt. Die zweite Variabel (%%j ->wird automatisch erzeugt) wird mit dem zweiten Token (Franz) gesetzt Das macht dann ein "Echo PC1 Franz" wenn du den Befehl nun änderst in: FOR /F "tokens=1,3 " %%i IN (Hostname.txt) DO echo %%i echo %%j passiert folgendes: DIe erste Variable (%%i) wird mit dem ersten Token (PC1) gesetzt. Die zweite Variabel (%%j ->wird automatisch erzeugt) wird mit dem dritten Token (Müller) gesetzt Das macht dann ein "Echo PC1 Müller" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hüsi Geschrieben 27. Juli 2004 Autor Teilen Geschrieben 27. Juli 2004 @thombo: Vielen Dank. So hab ichs dann auch verstanden. Wieso kann Microsoft das so nicht erklären (nein bitte jetzt hierauf keine Antworten)? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thombo Geschrieben 27. Juli 2004 Teilen Geschrieben 27. Juli 2004 mit For Schleifen kann man fast alles machen. Wenn du eine Liste mit z.B. 400 Rechner hast, und nur die haben möchtest, wo der Computername nicht mehr aufgelöst wird, dann mach mal folgendes: for /f %%i in (Computernamen.txt) do (ping %%i|find /i "Adresse" >>AdresseUngueltig.txt) Wenn du einen Computer per Namen (z.B. Rechner1) anpingst, erhälst du als Antwort: Antwort von 192.168.0.1:Bytes=32 Zeit<10ms TTL=127 Wenn der PC-Name namentechnisch nicht mehr aufgelöst wird (steht nicht mehr im DNS/WINS) dann erhälst du: Ungültige IP-Adresse Rechner1. Die For Schleife schreibt dann nur die Rechner in die Datei, wo als Ausgabe beim Ping "Adresse" steht. So ist das ganze übersichtlicher. Aber das nur am Rande Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hüsi Geschrieben 28. Juli 2004 Autor Teilen Geschrieben 28. Juli 2004 das ist ja sogar noch besser, vielen dank, funktioniert ganz prima! was ich daran noch nicht verstehe ist: wofür steht das zeichen: "|" in dem script? ich dachte bisher, das ständ für oder aber das passt hier nach meinem empfinden nicht so ganz. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Terran Marine Geschrieben 28. Juli 2004 Teilen Geschrieben 28. Juli 2004 das ist ja sogar noch besser, vielen dank, funktioniert ganz prima! was ich daran noch nicht verstehe ist: wofür steht das zeichen: "|" in dem script? ich dachte bisher, das ständ für oder aber das passt hier nach meinem empfinden nicht so ganz. Das | ist ein Pipe - Zeichen, d.h. die Standardausgabe vonping wird automatisch an die Standardeingabe von find weitergeben. Arbeiten mit Pipes ist gerade unter Linux sehr populär und sehr praktisch. Gruß Terran Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thombo Geschrieben 28. Juli 2004 Teilen Geschrieben 28. Juli 2004 Noch ein Hinweis: Wenn du den Befehl " for /f %%i in (Computernamen.txt) do (ping %%i|find /i "Adresse" >>AdresseUngueltig.txt)" in eine Batchdatei schreibst, brauchst du 2 %-Zeichen. Falls du den Befehl nicht einer Batch benötigst, sondern an der Eingabeaufforderung, so ist nur ein %-Zeichen notwendig -> for /f %i in (Computernamen.txt) do (ping %i|find /i "Adresse" >>AdresseUngueltig.txt) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darkskater Geschrieben 4. November 2005 Teilen Geschrieben 4. November 2005 Hallo, Ich kenne mich mit Batch überhaupt nicht aus. Ich habe mal irgendwo so ein Befehl gefunden, mit dem ich eine Homepage anpingen konnte. Ich glaube in der Datei stand irgendwas mit pingto oder so kA. Bitte helft mir.:confused: P.S.: Kennt jemand ein Buch über dieses Batch oder Bat? Ich würde mich damit mal gerne auseinander setzen. MfG Darkskater Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thombo Geschrieben 4. November 2005 Teilen Geschrieben 4. November 2005 wie wärs mit ping www.homepage.de ? Selbst wenn beim pingen TimeOuts auftreten heisst dass nicht dass die Seite nicht funktioniert. Viele Homepages antworten einfach nicht auf Ping Befehle... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darkskater Geschrieben 4. November 2005 Teilen Geschrieben 4. November 2005 Danke, Und kennst du auch ein Buch?:confused: :confused: :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thombo Geschrieben 4. November 2005 Teilen Geschrieben 4. November 2005 nein. Ich glaub auch nicht dass sich dafür ein Buch lohnt. Einfach mal "help" an der cmd eingeben. Da siehste alle Befehle die es gibt. Jeder befehl hat den Schalter "/?". Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thanks-and-Goodbye Geschrieben 4. November 2005 Teilen Geschrieben 4. November 2005 http://www.microsoft.com/technet/prodtechnol/windowsserver2003/de/library/ServerHelp/552ed70a-208d-48c4-8da8-2e27b530eac7.mspx http://de.wikibooks.org/wiki/Batch-Programmierung Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hüsi Geschrieben 15. Dezember 2005 Autor Teilen Geschrieben 15. Dezember 2005 for /f %%i in (Computernamen.txt) do (ping %%i|find /i "Adresse" >>AdresseUngueltig.txt) Das habe ich dann jetzt nochmal aufgegriffen und so umgebastelt: for /f %%i in (Hosts.txt) do (ping -n 1 %%i|if errorlevel 0 echo %%i >>RunningSystems.txt) allerings bekomm ich die dann die meldung "echo" ist syntaktisch an dieser Stelle nicht verarbeitbar. Was ich machen will: Ich hab eine Liste von Hostnames, und möchte die Rechner, die Antworten (errorlevel 0) in die Datei RunningSystems.txt schreiben, was jedoch nicht funktioniert. Jemand ne idee??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thombo Geschrieben 15. Dezember 2005 Teilen Geschrieben 15. Dezember 2005 das wird so nicht funktionieren, versuche es mal mit: for /f %%i in (Hosts.txt) do (ping -n 1 %%i | if %errorlevel%==0 echo %%i >>RunningSystems.txt) (Das wäre syntaktisch korrekt, funktioniert allerdinsg auch nicht, da nicht der Errorlevel, sondern die Ausgabe von ping per "|" an "if" übergeben wird. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
cane Geschrieben 15. Dezember 2005 Teilen Geschrieben 15. Dezember 2005 Der MS-Kommandozeileninterpreter kann ja mehr als ich dachte... Schade nur das MS nicht in der Lage ist vernünftige Manpages oder Hilfeeinträge zu integrieren - das ist für mich nach wie vor ein Ausschlusskriterium... Da bleib ich bei meiner Bash (zur Not cygwin), eigentlich schon unverschämt von mir die gute alte Bash mit der MS-Shell in einem Post zu nennen mfg cane Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Inti31 Geschrieben 15. Dezember 2005 Teilen Geschrieben 15. Dezember 2005 Hallo, ich habe da ne Batch (Ping.bat), die funktioniert so: @echo off cls Title PING-Abfrage laeuft... - bitte warten... set host=Clients.txt for /f %%i in (%host%) do (ping -n 1 %%i | find "Antwort" > nul ) && (@echo %%i = online>>LOG.txt) || (@echo %%i = offline>>Log.txt) Vielleicht hilft Dir das weiter... Gruß Inti31 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thombo Geschrieben 15. Dezember 2005 Teilen Geschrieben 15. Dezember 2005 for /f %%i in (Computernamen.txt) do (ping %%i|find /i "TTL" >>PCantwortet.txt) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hüsi Geschrieben 15. Dezember 2005 Autor Teilen Geschrieben 15. Dezember 2005 Es ging mir eigentlich darum, die Uptime von Systemen zu erfahren, wegen Patchverteilung via NetInstall. Meine Lösung sieht nun so aus: for /f %%i in (Hosts.txt) do uptime %%i >>RunningSystems.txt das ganze realisier ich mit der Uptime.exe Microsoft... Trotzdem danke für Eure Hilfe Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thombo Geschrieben 16. Dezember 2005 Teilen Geschrieben 16. Dezember 2005 welche Patches verteilst du damit ? Die von MS, die einmal monatlich verteilt werden ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hüsi Geschrieben 16. Dezember 2005 Autor Teilen Geschrieben 16. Dezember 2005 Die von MS, die einmal monatlich verteilt werden ? Eigentlich alles an Patchen und ServicePacks, die ein Windowssystem benötigt um sicher zu laufen. Zusätzlich all die Software und deren Updates, die von den meisten unserer Kunden benötigt werden (müssten so ca. 350 Produkte sein). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thombo Geschrieben 16. Dezember 2005 Teilen Geschrieben 16. Dezember 2005 da heisst du schreibst dann eine Textdatei mit allen PCs, die zur Zeit "an" sind. Wie wertest du die Datei aus ? Ich hab damals mal einen Batch geschrieben, der hat nachgesehen ob ein Rechner läuft, und dann direkt den Patch installiert. (per psexec.exe von www.sysinternals.com) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ryoorox Geschrieben 5. Januar 2009 Teilen Geschrieben 5. Januar 2009 Hallo zusammen, ich bin im Bereich der Batch-Programmierung auch noch ein totaler Anfänger. Ich habe folgendes Problem: Ich habe eine Liste mit IP-Adressen (ca. 30), das sind die IP-Adressen von Terminals in unserem Gebäude. Manchmal kommt es vor das die Terminals abstürzen, das bekommt man aber erst mit wenn sie irgendjemand beschwert das es aus ist. Nun dachte ich mir das, wenn alle Terminals sagen wir alle 30 minuten angepingt werden man ja schnell sieht wenn ein Terminal aus ist das man keine antwort bekommt... das was hier geschrieben wurde hat mich schonmal einen schritt weitergebracht mit: FOR /F "tokens=*" %%i IN (C:\ipliste.txt) DO ping %%i kann ich alle Terminals anpingen lassen.. nun weiß ich aber nicht wie ich es schaffe das er mir eine meldung auf den desktop gibt wenn einer mal nicht antwortet.. und wenn diese meldung kommt soll er aber trotzdem weiterhin die restlichen terminals anpingen... ich hoffe ihr könnt mir weiterhelfen, bin für jede Hilfe dankbar! MfG ryoorox Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Maulwurf_der_Schlaue Geschrieben 5. Januar 2009 Teilen Geschrieben 5. Januar 2009 Hallo ryoorox, dazu brauchst du 3 Dateien 1. Datei: Liste mit IP-Adressen oder Namen (pro Zeile eine IP) 2. Datei: Startet Pings 3. Datei: Startet Meldungsdialog Datei 1: 127.0.0.1 www.google.de www.sollteesnichtgeben.de Datei 2 (pinger.bat): @echo off cls set host=C:\ipliste.txt set pingsave=C:\tmp.txt set meldung=C:\meldung.bat echo ==================== echo Terminalueberwachung echo ==================== echo. echo Abbruch mit STRG+C echo. echo ==================== if exist %pingsave% ( erase %pingsave% ) :start for /f %%i in (%host%) do ( echo Pinge %%i ... ping -n 1 %%i | find /C "Antwort" >> %pingsave% if exist %pingsave% ( for /f %%a in (%pingsave%) do ( if %%a == 0 ( start %meldung% %%i ) ) erase %pingsave% ) else ( echo Datei %pingsave% nicht gefunden. ) ) goto start EXIT datei 3 (meldung.bat): @echo off CLS color C echo. echo Terminal %1 is DOWN! echo Terminal %1 is DOWN! echo Terminal %1 is DOWN! echo. PAUSE EXIT Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.