spackenbremse
Goto Top

Mit Batch IPs durchpingen und als PC Name in eine .TXT speichern

Tach zusammen!
Ich hab mich dran gemacht, ein Programm zu schreiben, welches 256 IP's durchpingt und die IP's, die es findet, in eine .txt zu schreiben.
so lässt sich ermitteln, wieviele PCs in einem Netzewerk online sind und welche IP diese benutzen.

Das Programm siet zurzeit so aus:
@ echo off
cls
title IPScan
SET T=%TIME:~0,5%

rem ############

echo IP parameter eingeben (ip) Bsp: 192.168.ip.110
set /p ip=

rem ############

echo Achtung! Durch druecken einer Taste startet der Scan. Dies kann einige Zeit
echo in Anspruch nehmen.
pause>nul
>ipscan.txt echo IPScan
echo Ping gestartet

rem ############

FOR /L %%a IN (0, 1, 255) DO ( ping 192.168.%ip%.%%a -n 1 -w 300 | find "TTL" >nul && echo IP erreichbar:   192.168.%ip%.%%a    >>ipscan.txt  
Echo Pinge 192.168.%ip%.%%a
)

rem #############

echo Ping ausgefuert. Ipscan.txt wird nach dem druecken einer Taste geloescht.
ipscan.txt
pause>nul
del ipscan.txt
rem ##ende##
Der Inhalt der ipscan.txt (z.B.):
IPScan
IP erreichbar: 192.168.2.1

Das ganze funktioniert auch soweit, jetzt meine fragen:

1) Was kann ich besser machen ?
2) Besteht die Möglichkeit, dass in der .txt ebenfalls der PC Name steht? (also: IP erreichbar: 192.168.2.345 - PC Name)?
3) Gibt es irgendein Befehl, der das Programm, bzw den Ping beschleunigt? Bisher benötigt er für die 256 Pings ca 3 - 5 minuten.

Danke im Vorraus
mfg

Content-ID: 74950

Url: https://administrator.de/contentid/74950

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

bastla
bastla 01.12.2007, aktualisiert am 18.10.2012 um 18:32:45 Uhr
Goto Top
Hallo Spackenbremse und willkommen im Forum!

Falls Dich die Suchfunktion noch nicht hierher geführt hat: Rechnernamen zu seiner IP per Batch ermitteln, wie?

Zum Thema Beschleunigung: Je nach Verwendungszweck könnte vielleicht auch
@echo off & setlocal
for /f "delims=\ " %%i in ('net view^|findstr /b "\\"') do call :ProcessClient %%i  
goto :eof

:ProcessClient
for /f "tokens=2" %%a in ('nslookup %1') do set IP=%%a  
echo %IP% - %1
genügen.

Grüße
bastla

P.S.: Wenn in Deiner Liste wirklich einmal
IP erreichbar: 192.168.2.345 - PC Name
steht, solltest Du anfangen, Dir Gedanken zu machen ... face-wink
Spackenbremse
Spackenbremse 01.12.2007 um 14:32:39 Uhr
Goto Top
Danke für die schnelle Antwort!

das problem ist Folgendes:
Wie du an meinem code villt. gemerkt hast, bin ich noch ein "fortgeschrittener Anfänger". Ich hab gerde sehr viel probiert, und trozdem hats bei mir nicht getan.
Davor noch eine Frage:
net view hat bei mir auch gerne mal Aussetzter - d.h. er findet die PCs nicht, dabei stehen die neben mir. Manche findet er, manche wiederrum nicht.
(z.B. der Router wird unter net view nicht angezeigt.)
Besteht keine Möglichkeit das irgendwie über IP's herauszufinden?

Wenn möglich möchte ich aber mit meinem Programm erreichen, dass er alle IP's von 0 bis 255 durchkämmt.


Nochmal Danke für dein Code bastla, ich werd ihn auf jeden fall mal gebrauchen können!
mfg
gnarff
gnarff 01.12.2007 um 16:38:00 Uhr
Goto Top
Hallo backenbremse!

Du möchtest offensichtlich das Rad neu erfinden; was Du da vorhast geht doch flott und einfach mit nmap: nmap -sL [StartIP/End] > ipliste.txt, wobei in ipliste.txt die zu pingenden IPs stehen.

Mit
@echo off
for /f "tokens=*" %%I in (ipliste.txt) do call :pinger %%I
goto :eof

:pinger
ping -n 1 %1
if %ERRORLEVEL% ==0 echo %1 >> ergebnis.txt
:: DONE

In der ergebnis.txt sollten sich dann die erreichbaren IPs verzeichnet finden

saludos
gnarff
Spackenbremse
Spackenbremse 01.12.2007 um 16:47:52 Uhr
Goto Top
Hallo backenbremse!

Du möchtest offensichtlich das Rad neu
erfinden; was Du da vorhast geht doch flott
und einfach mit nmap: nmap -sL [StartIP/End]
> ipliste.txt, wobei in ipliste.txt die zu
pingenden IPs stehen.

hallo gnarff!
danke auch dir für deine Antwort.
Den Befehl nmap kannte ich nocht nicht, und wieder habe ich etwas gelernt face-smile
funktioniert einwandfrei. DANKE
somit wäre das problemchen jetzt behoben!
danke an alle!
gnarff
gnarff 01.12.2007 um 16:52:13 Uhr
Goto Top
Hallo Spackenbremse,
gern geschehen!
saludos
gnarff
Spackenbremse
Spackenbremse 01.12.2007 um 17:33:55 Uhr
Goto Top
Tut mir leid, ich muss euch noch einmal nerven:
gnarff, deine schleife geht echt gut, sie hört aber nichtmehr auf. bei IP 192.168.2.255 macht die mit 192.168.2.0 weiter, dann 192.168.2.1 usw....
ich habs mit if abfragen versucht, bin jedoch gescheitert.

:pinger
if %%I = 192.168.2.255 goto ende
ping -n 1 -w 200 %1 >>ping.dat
if %ERRORLEVEL% ==0 echo IP erreichbar:   %1 >> IPScan.txt
echo Pinge %1

bin ich zu blöd um ne if abfrage zu machen( was ich nur selten brauche) oder ist mein gesammter gedanken gang falsch, die if abfrage dort hin zu machen?!?


dann wäre da noch die sache mit dem PC name... ist unmöglich oder?
bastla
bastla 01.12.2007 um 17:58:36 Uhr
Goto Top
Hallo Spackenbremse!

Zu Deinem (ursprünglichen) Batch noch die gewünschte Ergänzung (als Unterprogramm)
@echo off & setlocal
cls
title IPScan

set IPConst=192.168
set Log=%temp%\ipscan.txt

rem ############

echo IP parameter eingeben (ip) Bsp: %IPConst%.ip.110
set /p ip=

rem ############

echo Achtung! Durch druecken einer Taste startet der Scan. Dies kann einige Zeit
echo in Anspruch nehmen.
pause>nul

echo IPScan>%Log% 
echo Ping gestartet

rem ############

for /L %%a in (1, 1, 254) do (
	echo Pinge %IPConst%.%ip%.%%a
	ping %IPConst%.%ip%.%%a -n 1 -w 300 | find "TTL" >nul && call :Ausgabe %IPConst%.%ip%.%%a  
)

rem #############

echo Ping ausgefuehrt. %Log% wird nach dem druecken einer Taste geloescht.
%Log%
pause>nul
del %Log%

rem ##ende##
goto :eof

:Ausgabe
set Info=IP erreichbar:   %1
for /f "tokens=2 delims=:. " %%i in ('nslookup %1 2^>nul^|findstr /b "Name:"') do set "Info=%Info%	- %%i"  
echo %Info% >>%Log%
und einige Hinweise:

Der Adressanteil "192.168" wird an vielen Stellen im Batch benötigt und daher, so wie zB auch der Dateiname der Logdatei, am Anfang in einer Variablen hinterlegt, was den Batch übersichtlicher und vor allem auch leichter anpassbar macht. Da diese Variablen nur innerhalb dieses Batches benötigt werden, sorgt ein "setlocal" dafür, dass sie am Ende wieder gelöscht werden.

Da die Logdatei ohnehin wieder gelöscht wird, wäre sie IMHO besser im Temp-Verzeichnis platziert.

Du hattest eine Variable %T% für die Startzeit gesetzt, aber in weiterer Folge nicht verwendet.

Die Zählschleife würde ich nur von 1 bis 254 laufen lassen (wiewohl sich der Zeitgewinn dadurch in Grenzen hält face-wink).

Grüße
bastla

[Edit] Hatte Deinen zwischenzeitlichen Kommentar nicht gesehen. [/Edit]
Spackenbremse
Spackenbremse 01.12.2007 um 18:14:33 Uhr
Goto Top
Hallo bastla.

Vielen dank für deine Mühe, das programm funktioniert einwandfrei!!

zu der T variable:
Ich dachte erst daran, die Zeit auch anzeigen zu lassen, in der er die IP anpingt, hab die idee aber dann wieder verworfen und vergessen T zu entfernen.


warum würdest du die schleife nur bis 254 laufen lassen?
immerhin besteht die möglichkeit, dass ein client die 255er ip hat.


mfg
bastla
bastla 01.12.2007 um 18:29:02 Uhr
Goto Top
Hallo Spackenbremse!

192.168.x.255 ist doch die Broadcastadresse des Netzes (siehe zB http://de.wikipedia.org/wiki/Broadcast, http://dimk.de/tcp-ip/ausarbeitung/ad7.htm oder http://www.lmtm.de/InformatiXTM/netzwerke/texte/ipadressen.html).

Grüße
bastla
gnarff
gnarff 01.12.2007 um 18:40:54 Uhr
Goto Top
Hallo Spackenbremse!

Ich würde zusätzlich noch die Option -a beim Ping-Kommando verwenden, dabei werden die IP-Adressen dann aufgelöst.

Nmap und Ping beende ich immer mit Ctrl-c...
Muss ich mir noch Gedanken zu der Schleife machen?

saludos
gnarff
Spackenbremse
Spackenbremse 01.12.2007 um 18:55:09 Uhr
Goto Top
hi gnarff

du darfst natürlich dir gedanken machen, mein programm funktioniert jetzt aber wunderbar, mit lösungen von euch beiden.

VIELEN DANK


@ bastla
interessant. ich weiß jedoch, das ich ein notebook mit .255 hab, ich schließ es gleich mal an, mal sehn was rauskommt. auch dir DANKE!!


ich seh schon, hier wird einem geholfen, ich werd das forum gleich mal weiterempfehlen face-smile
mfg
bastla
bastla 01.12.2007 um 19:37:51 Uhr
Goto Top
Hallo Spackenbremse!

ich weiß jedoch, das ich ein notebook mit .255 hab
Dazu etwa: http://forum.de.selfhtml.org/archiv/2007/5/t153010/

ich werd das forum gleich mal weiterempfehlen face-smile
Merci.

Grüße
bastla