Supportnet Computer
Planet of Tech

Supportnet / Forum / NW-Sonstiges

Mehrere Hosts gleichzeitig anpingen





Frage

Hallo, ich mich freuen wenn mir jemand einen Tipp geben könnte wie ich mehrere Hosts gleichzeitig anpingen könnte. Wie funktioniert das bei dem DOS-Befehl "PING" (evtl. Hostliste)? Gibt's da vielleicht auch ein Tool, dass grafisch alle Hosts auf einmal anzeigt? Danke für eure Zuschriften!

Antwort 1 von Undertaker

Hi,

ich behelfe mir mit einem Script, das alle paar Minuten über den Taskmanager ausgeführt wird und das Ergebnis in eine Textdatei schreibt.
Wen Dir das reicht, poste ich es Dir...

Gruß
Undertaker

Antwort 2 von [Rocco]

@Undertaler:
Ohja das ist auch nicht schlecht. Wenn es dich nicht stört, dann könntest du mir deine Lösung mal posten. Ich suche einfach eine Möglichkeit ein paar Server im Auge zu behalten, ohne dass ich immer alle einzeln anpingen muss.

Danke!

Antwort 3 von Undertaker

Hi,

ScanSubnetz.cmd
@ECHO OFF

:: *** Date und Time ***
DATE /T | SETWORD 2 >TMP.cmd 
CALL TMP.cmd timestamp 
TIME /T | SETWORD 1 >TMP.cmd  
CALL TMP.cmd zeit 
DEL TMP.cmd 
ECHO %zeit% | findstr /R "..:.." >NUL
IF %errorlevel%==1 SET zeit=0%zeit%
SET timestamp=%timestamp% %zeit%

:: *** Netz scannen ***
SET result=
SET resultNB=
:: FOR /L %Variable IN (Start,Schritt,Ende) DO Befehl [Parameter]
FOR /L %%a IN (1,1,20) DO CALL ScanSubnetz1.cmd 192.168.100. %%a

:: *** Vorherigen Status laden ***
CALL ScanSubnetz2.cmd>NUL

:: *** Erster Scan nach Neustart schreibt immer Headline ***
IF "%zeit%"=="05:08" GOTO OUTRESULT
IF NOT "%scansubnetz%"=="%result%" GOTO OUTRESULT
:: *** Ergebnis identisch, Kein Eintrag ***
GOTO ENDE

:OUTRESULT
ECHO %result% %timestamp% %resultNB%>tmp.txt

:: *** Server Neustart? Headline schreiben ***
IF "%zeit%"=="05:08" GOTO HEADLINE
IF exist ScanSubnetz.txt GOTO NOHEADLINE

:HEADLINE
ECHO *** Schreibe Headline ***
SET headline0=--------------------------------------------------------
SET headline1=12345678901234567890  Datum      Zeit NetBIOS-Namen
ECHO %headline0%>>tmp.txt
ECHO %headline1%>>tmp.txt
ECHO %headline0%>>tmp.txt

:NOHEADLINE
:: *** Neue Einträge am Anfag des Protokolls einfügen ***
COPY tmp.txt /A + ScanSubnetz.txt /A tmp2.txt>NUL
DEL ScanSubnetz.txt>NUL
DEL tmp.txt>NUL
RENAME tmp2.txt ScanSubnetz.txt>NUL

:ENDE
ECHO set scansubnetz=%result%>ScanSubnetz2.cmd

ScanSubnetz1.cmd
@ECHO OFF
ping -n 2 -w 20 %1%2 | findstr "Antwort" >NUL
if %errorlevel%==0 GOTO ONLINE

:OFFLINE
set result=%result%.
::echo No Client on %1%2
GOTO ENDE

:ONLINE
set result=%result%J
ping -n 1 -w 20 -a %1%2 | SETWORD 2 >TMP.BAT
call TMP.BAT x
del TMP.BAT
if "%x%"=="wird" set x=[OhneName]
::echo Found Client %x% on %1%2
set resultNB=%resultNB%, %2:%x%

:ENDE


Das Programm SETWORD kannst Du Dir selber basteln
oder ich schicke es Dir...
--------------------------------------------schnipp---------------
    e100 BE 81 0 AC "< t"FB "N+"C0 "*"FF B9 A 0 8A 1C "F"80 EB "08"CB
    e118 "s"6 F7 E1 1 D8 "s"ED "P"BE A2 1 "+"DB 89 F2 B9 0 F0 B4 "?"CD
    e12E "!"8B D8 C6 0 1A B9 7 0 BA 9B 1 BB 1 0 B4 40 CD "!]"85 ED "u"
    e145 1 "E+"C9 AC "< t"FB "<,t"F7 "<;t"F3 "<=t"EF "<"D "t"EB "<"A
    e160 "t"E7 "N"89 F2 80 "<"1A "t F"8A 4 "< t"14 "<,t"10 "<;t"C "<="
    e17B "t"8 "<"D "t"4 "<"A "u"E0 "A;"CD "u"BF 8B CE ")"D1 B4 40 CD
    e191 "!"B4 ">"CD "!"B8 0 "L"CD "!set %1="
    n SETWORD.COM
    rCX
    A2
    w
    q
    --------------------------------------------schnapp---------------

    Das Skript enthält den kompletten Programm-Code als Folge von
    Eingabebefehlen für DEBUG, und am Ende die Anweisungen zum Schreiben
    der Datei.

    Zur Erstellung der COM-Datei bitte wie folgt vorgehen:

    * Skript zwischen den Trennlinien ausschneiden und in eine Datei
      kopieren, z.B. SETWORD.SCR

    * Auf der Befehlsebene eingeben:   DEBUG < SETWORD.SCR

    Die Eingabe-Datei wird damit von DEBUG als Input abgearbeitet, und
    das Resultat wird in die Datei SETWORD.COM (ins aktuelle Verzeichnis)
    geschrieben.


Gruß
Undertaker

Antwort 4 von [Rocco]

Ui ui ui....das sieht aber ganz schö nkomplziert aus, ich glaub da muss mich mich erst durcharbeiten ;-)

Ich hab auch gleichzeitig ein Tool von KS-Soft gefunden, nent sich Host-Monitor....nebenher probiere ich das auch aus.

Vielen Dank!

Antwort 5 von Rodi

Hi.
Wenns auch grafisch sein soll gibts was von HP.
Das Paket nennt sich NETVIEW.
Näheres aber bitte nicht fragen. A) es ist teuer
B) ich habe noch nicht damit gearbeitet.
Es gibt auch einige Lösungen die mit SNMP arbeiten.
Gruss @all,
Dirk

Antwort 6 von Undertaker

Hi,

>> Ui ui ui....das sieht aber ganz schön komplziert aus

Hä? Datt is doch blos´n bissle anspruchslose Batchprogrammierung. ;-)
Du mußt nur in der Schleife den ersten und letzen Wert für das virte Octet eintragen und ggf. die ersten drei Octets (192.168.100.) auf das Netzwerk anpassen.
Dann noch die Headline anpassen, wenn weniger oder mehr als die eingestellten 20 IPs gescannt werden.
Und abschließend über den Taskplaner alle paar Minuten laufen lassen...

Ist nicht die schnellste Lösung, aber sie kostet nichts, bringt keine Spyware mit und für mein privates LAN reicht sie vollkommen.

Ich hab auch gleichzeitig ein Tool

Na, dem kann mein Script natürlich nicht das Wasser reichen... ;-)


Ich hätte da noch ein Script, das mit NET VIEW arbeitet und schneller ist. Hat aber den gleichen bescheidene Aktuallität, die man aus der Netzwerkumgebung (Browserliste, WINS) gewohnt ist...

ScanNetBIOSNames.cmd
@ECHO OFF
DEL LIST.TXT>NUL
FOR /F "skip=2 tokens=1" %%a in ('NET VIEW') do @call ScanNetBIOSNames1.cmd %%a
DEL LIST2.TXT>NUL
FOR /F "tokens=1,2,3,5,6,7 delims= " %%a in (LIST.TXT) do ECHO %%a.%%b.%%c.%%d   %%e   %%f>>LIST2.TXT
REN LIST2.TXT ScanNetBIOSNames.txt

ScanNetBIOSNames1.cmd
@ECHO OFF
ECHO %1 | FINDSTR /R "\\.*">TMP.TXT
IF %errorlevel%==1 GOTO ENDE
::arp -d *>NUL
FOR /F "tokens=1 delims=\ " %%a in (TMP.TXT) do set netbiosname=%%a
ping -a -n 1 -w 20 %netbiosname% | findstr "Antwort">TMP.TXT
IF %errorlevel%==1 GOTO ENDE
FOR /F "tokens=3 delims=. " %%a in (TMP.TXT) do set y=%%a
FOR /F "tokens=1 delims= " %%a in ('ECHO %y%') do set octet1=%%a
FOR /F "tokens=4 delims=. " %%a in (TMP.TXT) do set y=%%a 
FOR /F "tokens=1 delims= " %%a in ('ECHO %y%') do set octet2=%%a
FOR /F "tokens=5 delims=. " %%a in (TMP.TXT) do set y=%%a 
FOR /F "tokens=1 delims= " %%a in ('ECHO %y%') do set octet3=%%a
FOR /F "tokens=6 delims=. " %%a in (TMP.TXT) do set y=%%a 
FOR /F "tokens=1 delims= " %%a in ('ECHO %y%') do set octet4=%%a
ECHO %octet4% | FINDSTR /R "...:">NUL
IF %errorlevel%==1 SET octet4=0%octet4%
ECHO %octet4% | FINDSTR /R "...:">NUL
IF %errorlevel%==1 SET octet4=0%octet4%
FOR /F "tokens=1 delims=: " %%a in ('ECHO %octet4%') do set octet4=%%a
FOR /F "tokens=1 delims=: " %%a in ('ECHO %y%') do set y=%%a

ARP -a | FINDSTR .%y%>TMP.TXT
FOR /F "tokens=2" %%a in (TMP.TXT) do set mac=%%a

ECHO %octet1% %octet2% %octet3% %octet4% %y% %mac% %netbiosname%>>LIST.TXT
SORT LIST.TXT /O LIST.TXT

:ENDE


Gruß
Undertaker

Antwort 7 von Undertaker

Ups, Fehler!

Es fehlt im Script ScanNetBIOSNames.cmd eine Zeile:
FOR [...]
DEL ScanNetBIOSNames.txt>NUL
REN [...]



Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: