Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

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

Frage Entwicklung Batch & Shell

Mitglied: Spackenbremse

Spackenbremse (Level 1) - Jetzt verbinden

01.12.2007, aktualisiert 18.10.2012, 6369 Aufrufe, 12 Kommentare

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:
01.
@ echo off 
02.
cls 
03.
title IPScan 
04.
SET T=%TIME:~0,5% 
05.
 
06.
rem ############ 
07.
 
08.
echo IP parameter eingeben (ip) Bsp: 192.168.ip.110 
09.
set /p ip= 
10.
 
11.
rem ############ 
12.
 
13.
echo Achtung! Durch druecken einer Taste startet der Scan. Dies kann einige Zeit 
14.
echo in Anspruch nehmen. 
15.
pause>nul 
16.
>ipscan.txt echo IPScan 
17.
echo Ping gestartet 
18.
 
19.
rem ############ 
20.
 
21.
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 
22.
Echo Pinge 192.168.%ip%.%%a 
23.
24.
 
25.
rem ############# 
26.
 
27.
echo Ping ausgefuert. Ipscan.txt wird nach dem druecken einer Taste geloescht. 
28.
ipscan.txt 
29.
pause>nul 
30.
del ipscan.txt 
31.
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
Mitglied: bastla
01.12.2007, aktualisiert 18.10.2012
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
01.
@echo off & setlocal 
02.
for /f "delims=\ " %%i in ('net view^|findstr /b "\\"') do call :ProcessClient %%i 
03.
goto :eof 
04.
 
05.
:ProcessClient 
06.
for /f "tokens=2" %%a in ('nslookup %1') do set IP=%%a 
07.
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 ...
Bitte warten ..
Mitglied: Spackenbremse
01.12.2007 um 14:32 Uhr
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
Bitte warten ..
Mitglied: gnarff
01.12.2007 um 16:38 Uhr
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
Bitte warten ..
Mitglied: Spackenbremse
01.12.2007 um 16:47 Uhr
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
funktioniert einwandfrei. DANKE
somit wäre das problemchen jetzt behoben!
danke an alle!
Bitte warten ..
Mitglied: gnarff
01.12.2007 um 16:52 Uhr
Hallo Spackenbremse,
gern geschehen!
saludos
gnarff
Bitte warten ..
Mitglied: Spackenbremse
01.12.2007 um 17:33 Uhr
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.

01.
:pinger 
02.
if %%I = 192.168.2.255 goto ende 
03.
ping -n 1 -w 200 %1 >>ping.dat 
04.
if %ERRORLEVEL% ==0 echo IP erreichbar:   %1 >> IPScan.txt 
05.
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?
Bitte warten ..
Mitglied: bastla
01.12.2007 um 17:58 Uhr
Hallo Spackenbremse!

Zu Deinem (ursprünglichen) Batch noch die gewünschte Ergänzung (als Unterprogramm)
01.
@echo off & setlocal 
02.
cls 
03.
title IPScan 
04.
 
05.
set IPConst=192.168 
06.
set Log=%temp%\ipscan.txt 
07.
 
08.
rem ############ 
09.
 
10.
echo IP parameter eingeben (ip) Bsp: %IPConst%.ip.110 
11.
set /p ip= 
12.
 
13.
rem ############ 
14.
 
15.
echo Achtung! Durch druecken einer Taste startet der Scan. Dies kann einige Zeit 
16.
echo in Anspruch nehmen. 
17.
pause>nul 
18.
 
19.
echo IPScan>%Log%  
20.
echo Ping gestartet 
21.
 
22.
rem ############ 
23.
 
24.
for /L %%a in (1, 1, 254) do ( 
25.
	echo Pinge %IPConst%.%ip%.%%a 
26.
	ping %IPConst%.%ip%.%%a -n 1 -w 300 | find "TTL" >nul && call :Ausgabe %IPConst%.%ip%.%%a 
27.
28.
 
29.
rem ############# 
30.
 
31.
echo Ping ausgefuehrt. %Log% wird nach dem druecken einer Taste geloescht. 
32.
%Log% 
33.
pause>nul 
34.
del %Log% 
35.
 
36.
rem ##ende## 
37.
goto :eof 
38.
 
39.
:Ausgabe 
40.
set Info=IP erreichbar:   %1 
41.
for /f "tokens=2 delims=:. " %%i in ('nslookup %1 2^>nul^|findstr /b "Name:"') do set "Info=%Info%	- %%i" 
42.
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 ).

Grüße
bastla

[Edit] Hatte Deinen zwischenzeitlichen Kommentar nicht gesehen. [/Edit]
Bitte warten ..
Mitglied: Spackenbremse
01.12.2007 um 18:14 Uhr
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
Bitte warten ..
Mitglied: bastla
01.12.2007 um 18:29 Uhr
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
Bitte warten ..
Mitglied: gnarff
01.12.2007 um 18:40 Uhr
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
Bitte warten ..
Mitglied: Spackenbremse
01.12.2007 um 18:55 Uhr
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
mfg
Bitte warten ..
Mitglied: bastla
01.12.2007 um 19:37 Uhr
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
Merci.

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...