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
Kommentar vom Moderator Biber am 27.06.2012 um 19:13:28 Uhr
Verschoben von "Windows oder watt" nach "Batch & Shell"
GELÖST

Batchfile zum Pingen erstellen mit Schleife

Frage Entwicklung Batch & Shell

Mitglied: Lehnau

Lehnau (Level 1) - Jetzt verbinden

26.06.2012, aktualisiert 27.06.2012, 11063 Aufrufe, 34 Kommentare

System Windows XP SP3

Guten Tag,

ich würde gern ein script erstellen mit dem ich einen gewissen ip-bereich nacheinander anpingen kann.
eine ausgabe in einer txt datei ist optional falls es nicht anders geht.
die ersten 3 ip oktetten sind fest und die letzte soll halt hochzählen.

der sinn des ganzen ist das ich feststellen möchte welche ip adressen vergeben sind.

ich verzweifle da gerade.

mit freundlichen Grüßen
34 Antworten
Mitglied: Penny.Cilin
26.06.2012, aktualisiert um 12:28 Uhr
Dös geht so:
01.
for /l %%f in (1, 1, <endwert>) do @ping -n 1 <iprange>.%%f | find "TTL" 
02.
pause
<endwert> und <iprange< muss angepasst werden.

Auf der kommandozeile funktioniert es folgendermaßen: for /l %f in (1, 1, 20) do @Ping -n 1 192.172.168.%f | find "TTL"

[edit] Syntaxfehler bearbeitet.
Bitte warten ..
Mitglied: Lehnau
26.06.2012 um 11:20 Uhr
danke für die schnelle antwort,

aber wenn ich das so eingebe dann geht das batchfenster sehr schnell wieder zu und ich kann nur gerade noch so erkennen das er was wegen der syntax bemängelt
Bitte warten ..
Mitglied: Penny.Cilin
26.06.2012 um 11:26 Uhr
OK, mein Beispiel ist für die Commandline.

Hänge ein
 pause 
ans Ende des batches.
Bitte warten ..
Mitglied: Lehnau
26.06.2012 um 11:35 Uhr
tut mir echt leid ich bin ungern der spaßverderber,...

aber mit pause bzw einfach nur in die cmd eingegeben bringt es kein ergebnis. meine änderung betreffen nur die end ip und die eigentliche netzip.
Bitte warten ..
Mitglied: Penny.Cilin
26.06.2012 um 11:41 Uhr
Dann kopiere mal die zwei Zeilen und erstelle ein Batch. Passe endwert und iprange an, dann sollte es funktionieren.
Bitte warten ..
Mitglied: Skyemugen
26.06.2012 um 12:52 Uhr
Aloha,

naja, Penny hat es eben für eine Batch geschrieben und nicht für die CMD, bei der CMD-Ausführung musst du die Prozentzeichen halbieren

greetz André
Bitte warten ..
Mitglied: Lehnau
26.06.2012 um 12:54 Uhr
habs so gemacht... im cmd prompt wird mir dann minutenlang die erste zeile angezigt ohne das sichtlich etwas passiert... irgendwann sagt er dann das ich eine beliebige taste drücken soll und cmd schließt sich wieder
Bitte warten ..
Mitglied: Penny.Cilin
26.06.2012 um 12:57 Uhr
Zitat von Skyemugen:
Aloha,

naja, Penny hat es eben für eine Batch geschrieben und nicht für die CMD, bei der CMD-Ausführung musst du die
Prozentzeichen halbieren

greetz André

Ich hatte es ursprünglich für die Commandshell gepostet. Und dann für den Batch angepasst.
Man könnte es erweitern, indem man die Parameter <iprange> und <endwert> abfragt, somit wäre es etwas variabler.

ich habe mir ein DOSKEY Macro erstellt
Scan=for /l %f in (1, 1, $2) do @ping -n 1 $1.%f | find "TTL"
so brauche ich nur noch das Netz und die Range angeben.
Bitte warten ..
Mitglied: Lehnau
26.06.2012 um 13:01 Uhr
Wie gesagt, diese zeichenfolge funktioniert bei mir nicht. ob in der cmd eingegeben oder... in einer batch und dann ausgeführt...
das ist der grund warum ich am verzweifeln bin
Bitte warten ..
Mitglied: Penny.Cilin
26.06.2012 um 13:08 Uhr
Was passiert, wenn Du
for /l %f in (1, 1, 20) do @ping -n 1 192.172.168.%f | find "TTL"
auf der Befehlszeile eingibst?

Welche Fehlermeldung bekommst DU?
Bitte warten ..
Mitglied: Lehnau
26.06.2012 um 13:11 Uhr
keine fehlermeldung... der cursor springt in die nächste zeile und irgendwann lässt er mich dann in einer neuen befehlszeile wieder eingeben was ich will
Bitte warten ..
Mitglied: Penny.Cilin
26.06.2012 um 13:12 Uhr
mach mal ipconfig. gebe dann die ersten 3 teile anstelle von 192.172.168 ein. Du solltest dann zumindest ein Ping bekommen.
Bitte warten ..
Mitglied: Lehnau
26.06.2012 um 13:16 Uhr
das habe ich vorhin ja auch gemacht... da passiert nix...
Bitte warten ..
Mitglied: Penny.Cilin
26.06.2012 um 13:34 Uhr
OK, bekommst Du eine Ausgabe, wenn Du
for /l %f in (1, 1, 255) do @ping -n 1 x.x.x.%f
angibst?
Ersetze die x.x.x durch die Netzmaske wo sich Dein Rechner befindet.
Bitte warten ..
Mitglied: Lehnau
26.06.2012 um 13:38 Uhr
jetzt kommt was... Danke...
Bitte warten ..
Mitglied: Penny.Cilin
26.06.2012, aktualisiert um 13:57 Uhr
Stopp, jetzt erweitern wir das Ganze um einen Filter.
Dazu am Ende das Pipesymbol (|) und find /i "TTL" anfügen. Damit siehst Du nur die aktiven IP Adressen.
Bitte warten ..
Mitglied: Penny.Cilin
26.06.2012 um 14:13 Uhr
Unn hier als Batch:
01.
@Echo Off & Setlocal ENABLEDELAYEDEXPANSION 
02.
CLS 
03.
 
04.
:: Leeren wir zur Sicherheit die Variablen. 
05.
Set RANGE= 
06.
SET ENDE= 
07.
 
08.
:: Wir fragen den Adressbereich ab. 
09.
Echo.   Geben Sie die den Adressbereich ein (z. B.: 192.172.168) 
10.
Set /P Range= 
11.
Echo. 
12.
 
13.
:: Wir fragen die letzte zu scannende Adresse ab. 
14.
Echo.   Geben Sie den Endbereich ein (z. B: 20) 
15.
Set /P  Ende= 
16.
 
17.
:: Diser Adressbereich wird nun angepingt 
18.
Echo.   Es werden nun die Adressen %RANGE%.1 bis %RANGE%.%ENDE% gepingt. 
19.
Echo. 
20.
 
21.
:: Die FOR Schleife machts doing.... 
22.
FOR /l %%f in (1,1,%ENDE%) Do @ping -n 1 %RANGE%.%%f | FindStr /I "TTL" 
23.
 
24.
:: Damit man es auch anschauen kann, eine kleine PAUSE. 
25.
Echo. 
26.
Echo.   Weiter mit beliebiger Taste. 
27.
PAUSE > NUL 
28.
 
29.
:EOF 
30.
EndLocal
Bitte warten ..
Mitglied: Medusaman
26.06.2012, aktualisiert um 15:08 Uhr
Hallo Lehnau,

dein Problem ist zwar schon gelöst, aber ich habe ein erweitertes Script geschrieben. Schau es dir mal an, vielleicht sind meine Erweiterungen auch für dich nützlich.

Mit freundlichen Grüßen Medusaman

01.
@echo off 
02.
TITLE IP-Adressen 
03.
color F4 
04.
:anfang 
05.
if exist IP-Adressen.txt del IP-Adressen.txt > nul  
06.
cls 
07.
echo Bitte geben Sie den ersten Teil der IP ein!  
08.
echo Dieser sollte folgendem Muster entsprechen 192.168.1. 
09.
echo !!!Der letzte Punkt ist wichtig!!! 
10.
set /p ip=Ihre IP:  
11.
set /p end=Geben Sie die Endadresse ein! Z.B. 255:  
12.
setlocal enabledelayedexpansion 
13.
set /a anzahl=0 
14.
IF %end% LEQ 255(		 
15.
echo  IP-Adresse            MAC-Adresse            Typ >> IP-Adressen.txt 
16.
echo _________________________________________________________  >> IP-Adressen.txt && echo. >> IP-Adressen.txt 
17.
for /L %%N IN (1, 1, %end%) DO ( 
18.
set anzahl 
19.
cls 
20.
echo Ich arbeite! 
21.
ping %ip%%%N -n 1 -l 1 | find "TTL" > nul && cls && echo Ich arbeite! && nslookup %ip%%%N | find "Name" >> nul && cls && echo Ich arbeite! && arp -a %ip%%%N | find "dynamisch" >> IP-Adressen.txt && cls && echo Ich arbeite! && echo. >> IP-Adressen.txt && cls && echo Ich arbeite! && nslookup %ip%%%N | find "Name:" >> IP-Adressen.txt && cls && echo Ich arbeite! && cls && echo Ich arbeite! && echo. >> IP-Adressen.txt && echo --------------------------------------------------------- >> IP-Adressen.txt && echo. >> IP-Adressen.txt && set /a anzahl=!anzahl!+1 
22.
23.
if exist IP-Adressen.txt	( 
24.
cls 
25.
echo Eine Liste der erreichbaren IP-Adressen, 
26.
echo sowie der dazugehoerigen MAC-Adressen, 
27.
echo der Beziehungstypen 
28.
echo und der Geraetenamen in der Domain wurde 
29.
echo in der Datei IP-Adressen.txt erstellt. 
30.
echo. >> IP-Adressen.txt 
31.
echo !anzahl! IP-Adressen wurden gefunden >> IP-Adressen.txt 
32.
echo. >> IP-Adressen.txt 
33.
echo _________________________________________________________ >> IP-Adressen.txt 
34.
pause > nul 
35.
start IP-Adressen.txt 
36.
QUIT							 
37.
) ELSE 	( 
38.
echo Das Programm konnte keine IP Adresse finden. 
39.
pause > nul 
40.
QUIT 
41.
42.
) ELSE 	( 
43.
echo Die Endadresse ist zu gross. Sie darf maximal 255 sein. 
44.
pause > nul 
45.
goto anfang 
46.
)
Bitte warten ..
Mitglied: Penny.Cilin
26.06.2012 um 15:36 Uhr
Hallo Medusman,

Du mußt einen Denkfehler in Deinem Skript haben, denn die Liste isst leer.
Bitte warten ..
Mitglied: Medusaman
26.06.2012 um 15:39 Uhr
Hallo Penny,

das passt so, was ich aber vergessen hab, ohne eigene Domain funktioniert das nicht. Wenn die IP nicht über nslookup aufgelöst werden kann gibt es nix aus.

Sorry, hätte ich dazu schreiben sollen.

Mit freundlichen Grüßen Medusaman
Bitte warten ..
Mitglied: Penny.Cilin
26.06.2012, aktualisiert um 15:55 Uhr
hallo Medusaman,

wieso benötigst Du eine eigene Domain? Ein NSLOOKUP auf den DNS sollte doch reichen?

Und ein Test auf einem Memberserver bringt mir 0 Adressen zurück.
Per Befehl auf der Commandline
for /l %f in (1, 1, 255) do @ping -n 1 <range>.%f | findstr /i "ttl" 
bekomme ich jede Menge Adressen zurück.

fragt penny
Bitte warten ..
Mitglied: Medusaman
26.06.2012 um 15:56 Uhr
Und nochmal sorry, nicht Domain, sondern einen DNS der die Namen auflöst. Hast recht
Bitte warten ..
Mitglied: Penny.Cilin
26.06.2012 um 15:58 Uhr
Aber trotzdem, mit deinem Skript werden mir 0 Adressen angezeigt.
Bitte warten ..
Mitglied: Medusaman
26.06.2012 um 16:01 Uhr
Bei mir funktioniert es ohne Probleme und gibt mir dann eine schöne Liste aus:

IP-Adresse MAC-Adresse Typ
_________________________________________________________

192.168.100.1 ff-ff-ff-ff-ff-ff dynamisch

Name: max.blub.de
Bitte warten ..
Mitglied: Medusaman
26.06.2012 um 16:07 Uhr
Versuch es mal damit:

01.
@echo off 
02.
TITLE IP-Adressen 
03.
color F4 
04.
:anfang 
05.
if exist IP-Adressen.txt del IP-Adressen.txt > nul  
06.
cls 
07.
echo Bitte geben Sie den ersten Teil der IP ein!  
08.
echo Dieser sollte folgendem Muster entsprechen 192.168.1. 
09.
echo !!!Der letzte Punkt ist wichtig!!! 
10.
set /p ip=Ihre IP:  
11.
set /p end=Geben Sie die Endadresse ein! Z.B. 255:  
12.
setlocal enabledelayedexpansion 
13.
set /a anzahl=0 
14.
IF %end% LEQ 255 	( 
15.
echo  IP-Adresse            MAC-Adresse            Typ >> IP-Adressen.txt 
16.
echo _________________________________________________________  >> IP-Adressen.txt && echo. >> IP-Adressen.txt 
17.
for /L %%N IN (1, 1, %end%) DO ( 
18.
set anzahl 
19.
cls 
20.
echo Ich arbeite! 
21.
ping %ip%%%N -n 1 -l 1 | find "TTL" > nul && cls && echo Ich arbeite! && cls && echo Ich arbeite! && arp -a %ip%%%N | find "dynamisch" >> IP-Adressen.txt && cls && echo Ich arbeite! && echo. >> IP-Adressen.txt && cls && echo Ich arbeite! && cls && echo Ich arbeite! && cls && echo Ich arbeite! && echo. >> IP-Adressen.txt && echo --------------------------------------------------------- >> IP-Adressen.txt && echo. >> IP-Adressen.txt && set /a anzahl=!anzahl!+1 
22.
23.
if exist IP-Adressen.txt	( 
24.
cls 
25.
echo Eine Liste der erreichbaren IP-Adressen, 
26.
echo sowie der dazugehoerigen MAC-Adressen 
27.
echo und der Beziehungstypen wurde 
28.
echo in der Datei IP-Adressen.txt erstellt. 
29.
echo. >> IP-Adressen.txt 
30.
echo !anzahl! IP-Adressen wurden gefunden >> IP-Adressen.txt 
31.
echo. >> IP-Adressen.txt 
32.
echo _________________________________________________________ >> IP-Adressen.txt 
33.
pause > nul 
34.
start IP-Adressen.txt 
35.
QUIT								 
36.
) ELSE 	( 
37.
echo Das Programm konnte keine IP Adresse finden. 
38.
pause > nul 
39.
QUIT 
40.
41.
) ELSE 	( 
42.
echo Die Endadresse ist zu gross. Sie darf maximal 255 sein. 
43.
pause > nul 
44.
goto anfang 
45.
)
Bitte warten ..
Mitglied: Penny.Cilin
26.06.2012 um 16:09 Uhr
hier leider nicht (

Ich versuche mal die Monsterzeile zu verstehen. Nutze Win XP.
Bitte warten ..
Mitglied: Medusaman
26.06.2012 um 16:19 Uhr
Ist eigentlich ganz simpel

ping %ip%%%N -n 1 -l 1 | find "TTL" > nul ping mit der IP
&& nslookup %ip%%%N | find "Name" >> nul
nslookup mit der IP
&& arp -a %ip%%%N | find "dynamisch" >> IP-Adressen.txt arp mit der IP
&& nslookup %ip%%%N | find "Name:" >> IP-Adressen.txt
noch ein nslookup mit der IP

Der Rest mit && echo Ich arbeite && und sowas ist alles nur für die Optik.
Da das alles mit && verknüpft ist werden nur Adressen aufgezeichnet, deren Name auch aufgelöst werden können.
Ich arbeite auch noch unter XP.
Bitte warten ..
Mitglied: Penny.Cilin
26.06.2012 um 16:30 Uhr
Ich habe grade herausgefunden, das arp -a mir keine Auflistung gibt.
Warum weiß ich jetzt noch nicht.
Den Rest habe ich noch nicht geprüft.

ich hangele mich schritt für schritt weiter.
Bitte warten ..
Mitglied: Medusaman
26.06.2012 um 18:36 Uhr
Arbeitest du mit statischen Arp Einträgen?
Bitte warten ..
Mitglied: Penny.Cilin
27.06.2012 um 09:01 Uhr
Zitat von Medusaman:
Arbeitest du mit statischen Arp Einträgen?

Moin Medusaman,

nicht daß ich wüßte. Ich habe grade mal einen arp -a ausgeführt und bekomme nun Rückmeldung. Ich weiß jetzt auch nicht, ob und wann der ARP-Cache gelöscht wird.
Bitte warten ..
Mitglied: Murzel
27.06.2012, aktualisiert um 23:17 Uhr
hi,
probier mal

http://www.heise.de/download/network-scanner-1113270.html

oder nmap, gibts auch fuer windows

nmap.org
Bitte warten ..
Mitglied: Medusaman
27.06.2012 um 23:45 Uhr
Hi Murzel,

ein guter Tipp

Mit freundlichen Grüßen Medusaman
Bitte warten ..
Mitglied: Murzel
28.06.2012 um 01:49 Uhr
Zitat von Medusaman:
Arbeitest du mit statischen Arp Einträgen?

kurze frag:
was sollen denn statische arp einträge sein?
Bitte warten ..
Mitglied: Medusaman
28.06.2012 um 07:35 Uhr
Zitat von Murzel:

kurze frag:
was sollen denn statische arp einträge sein?

Dabei schreibt man seine arp Tabelle selbst:
www.tecchannel.de/netzwerk/lan/402460/arp_grundlagen_und_spoofing/index8.html
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Netzwerkgrundlagen
IPsec - .conf und .secret erstellen aus Gruppe und User (16)

Frage von MaxMLe zum Thema Netzwerkgrundlagen ...

RedHat, CentOS, Fedora
gelöst Erstellen von Desktopverknüpfungen und Anpassung der Taskleiste (2)

Frage von honeybee zum Thema RedHat, CentOS, Fedora ...

Vmware
ESXI Template erstellen (2)

Frage von Phill93 zum Thema Vmware ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Microsoft
Ordner mit LW-Buchstaben versehen und benennen (19)

Frage von Xaero1982 zum Thema Microsoft ...

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

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...