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

Per Batch ermitteln, welche IPs in deinem Subnetz erreichbar sind

Anleitung Entwicklung Batch & Shell

Mitglied: TuXHunt3R

TuXHunt3R (Level 3) - Jetzt verbinden

26.07.2007, aktualisiert 28.07.2008, 25372 Aufrufe, 12 Kommentare, 2 Danke

Alle erreichbaren IPs in einem Class-C-Subnetz auflisten

Guten Tag

Wenn man mal wissen will, welche IP-Adressen in einem gewissen Subnetz erreichbar sind, kann man sich dieses Batches bedienen.
Einziger Nachteil: Der Batch ist langsam. Er braucht ungefähr 5 Minuten, bis er durchgelaufen ist.

Hier der Code meines Batches SUBNETWALK.BAT (korrigierte Version):


01.
::* 
02.
::* Subnetwalk.bat  
03.
::* ==============  
04.
::* Pingt alle IP-Adressen eines C-Netzes  
05.
::* und listet alle pingbaren Geräte auf  
06.
::* 
07.
 
08.
@echo off 
09.
cls 
10.
 
11.
::################################################################### 
12.
::Start-Aufgaben 
13.
 
14.
::------------------------------------------------------------------- 
15.
::Parameter-Abfragen 
16.
 
17.
if "%1%"=="" goto Manual 
18.
 
19.
if "%1%"=="?" goto Manual 
20.
 
21.
if "%1%"=="/?" goto Manual 
22.
 
23.
if "%1%"=="-?" goto Manual 
24.
 
25.
if "%1%"=="-h" goto Manual 
26.
 
27.
if "%1%"=="--h" goto Manual 
28.
 
29.
if "%1%"=="-help" goto Manual 
30.
 
31.
if "%1%"=="--help" goto Manual 
32.
 
33.
if "%1%"=="help" goto Manual 
34.
 
35.
 
36.
::------------------------------------------------------------------- 
37.
::------------------------------------------------------------------- 
38.
::Wenn ein Ordner %systemroot%\temp\SubnetWalk existiert, wird dieser gelöscht 
39.
if exist %systemroot%\temp\SubnetWalk ( 
40.
rmdir /s /q %systemroot%\temp\SubnetWalk 
41.
42.
 
43.
::------------------------------------------------------------------- 
44.
 
45.
::------------------------------------------------------------------- 
46.
:: Erstelle Ordner für Logfiles 
47.
mkdir %systemroot%\temp\SubnetWalk 
48.
::Erstelle ein Logfile in diesem Ordner 
49.
echo Dieser Ordner wurde vom Batch SubnetWalk.bat erstellt >>%systemroot%\temp\SubnetWalk\SubnetWalk-Readme.txt 
50.
echo Dieser Ordner kann gelöscht werden. >>%systemroot%\temp\SubnetWalk\SubnetWalk-Readme.txt 
51.
::------------------------------------------------------------------- 
52.
::################################################################### 
53.
 
54.
::################################################################### 
55.
::Hauptroutine 
56.
 
57.
echo SUBNETWALK.BAT 
58.
echo =============  
59.
echo. 
60.
echo Das Subnet %1.0 wird durchsucht... 
61.
echo Achtung: Dieser Vorgang dauert mehrere Minuten! 
62.
echo Schiesst also nicht schon nach 10 Sekunden den Batch ab! 
63.
echo. 
64.
::------------------------------------------------------------------- 
65.
:Schleife 
66.
for /l %%a IN (1,1,255) DO call :Pingvorgang %1 %%a 
67.
goto Filterung 
68.
 
69.
::------------------------------------------------------------------- 
70.
 
71.
::------------------------------------------------------------------- 
72.
:Pingvorgang 
73.
ping -n 1 %1.%2 >>%systemroot%\temp\SubnetWalk\SubnetWalk-Log1.txt 
74.
if "%2"=="26" ( 
75.
echo Subnet %1.0 zu 10 Prozent durchsucht... 
76.
77.
 
78.
if "%2"=="52" ( 
79.
echo Subnet %1.0 zu 20 Prozent durchsucht... 
80.
81.
 
82.
if "%2"=="77" ( 
83.
echo Subnet %1.0 zu 30 Prozent durchsucht... 
84.
85.
 
86.
if "%2"=="103" ( 
87.
echo Subnet %1.0 zu 40 Prozent durchsucht... 
88.
89.
 
90.
if "%2"=="128" ( 
91.
echo Subnet %1.0 zu 50 Prozent durchsucht... 
92.
93.
 
94.
if "%2"=="154" ( 
95.
echo Subnet %1.0 zu 60 Prozent durchsucht... 
96.
97.
 
98.
if "%2"=="180" ( 
99.
echo Subnet %1.0 zu 70 Prozent durchsucht... 
100.
101.
 
102.
if "%2"=="205" ( 
103.
echo Subnet %1.0 zu 80 Prozent durchsucht... 
104.
105.
 
106.
if "%2"=="231" ( 
107.
echo Subnet %1.0 zu 90 Prozent durchsucht... 
108.
109.
 
110.
goto end 
111.
::------------------------------------------------------------------- 
112.
 
113.
::------------------------------------------------------------------- 
114.
:Filterung 
115.
echo. 
116.
echo Subnetz wurde durchsucht. Filtere Ergebnisse... 
117.
echo. 
118.
type %systemroot%\temp\SubnetWalk\SubnetWalk-Log1.txt | find /i "ttl" >>%systemroot%\temp\SubnetWalk\SubnetWalk-Log2.txt 
119.
 
120.
::Putze überflüssige Zeichen aus jeder Zeile aus 
121.
@for /F "tokens=1,2,3,4 delims=: " %%a in (%systemroot%\temp\SubnetWalk\SubnetWalk-Log2.txt) do echo %%c >>%systemroot%\temp\SubnetWalk\SubnetWalk-Log3.txt 
122.
echo Ergebnisse gefiltert! 
123.
echo. 
124.
echo Folgende IPs im Subnetz %1 sind pingbar: 
125.
echo. 
126.
type %systemroot%\temp\SubnetWalk\SubnetWalk-Log3.txt 
127.
echo. 
128.
goto end 
129.
::################################################################### 
130.
 
131.
:Manual 
132.
echo SUBNETWALK.BAT 
133.
echo =============  
134.
echo. 
135.
echo Listet die pingbaren Geräte im angegebenen Subnetz auf.  
136.
echo Dieser Batch funktioniert nur bei Subnetzen mit einer 24-bittigen Subnetzmaske, 
137.
echo d.h. bei C-Class-Netzen (255.255.255.0)! 
138.
echo. 
139.
echo. 
140.
echo Starte Batch folgendermassen: 
141.
echo %~n0 Netz-ID 
142.
echo. 
143.
echo Beispiel: 
144.
echo %~n0 192.168.0 
145.
echo. 
146.
echo. 
147.
echo Anmerkung: 
148.
echo Eine IP-Adresse besteht immer aus Netz-ID (welche u.a. das Subnetz definiert) 
149.
echo und einer Host-ID (welche den entsprechenden Client definiert). 
150.
echo Bei einem C-Class-Netz (d.h. einem Netz mit der Subnetzmaske 255.255.255.0) 
151.
echo besteht die Netz-ID immer aus den ersten drei Bytes. 
152.
echo. 
153.
echo Beispiel: 
154.
echo Die Netz-ID der IP-Adresse 192.168.0.101 ist in einem C-Netz (d.h. mit der 
155.
echo Subnetzmaske 255.255.255.0) 192.168.0 
156.
echo. 
157.
 
158.
:end
Mitglied: miniversum
26.07.2007 um 14:15 Uhr
Ein paar kleinere Verbesserungsvorschläge von mir:
Bei der Parameter-Abrafge würd ich
If /i "%1%"==
schreiben. dan würde z.B. auch
Subnetwalk HelP
in der Eingabeaufforderung gehen.

In der For-Schleife kanns man die 0 glaub ich weglassen... Also statt:
for /l %%a IN (0,1,255) DO call :Pingvorgang %1 %%a
lieber:
for /l %%a IN (1,1,255) DO call :Pingvorgang %1 %%a

Wenn du beim ping noch ein -w 1 mitgibst gehts noch shcneller (das 1 kansn tdu bei größeren bzw. langsamen netzen auch höher setzen wenn Du meinst):
ping -n 1 -w 1 %1.%2 >>%systemroot%\temp\SubnetWalk\SubnetWalk-Log1.txt

Und als vierter Punkt würde ich in der Hilfe den Beispielbefehlsaufruf nicht mit nem Festen Dateinamen machen sondern den Der Batch benutzen. So kann man di eBatch auch anders nennen und der Aufruf steht dennoch immer richtig in der Hilfe:
Statt
echo SubnetWalk 192.168.0
also
echo %~n0 192.168.0


miniversum
Bitte warten ..
Mitglied: Seltermann
08.08.2007 um 17:01 Uhr
Bei der Ausführung deines Skripts kommt die Meldung: "if" ist syntaktisch an dieser Stelle nicht verarbeitbar.

Hier ist eine kleinere funktionierende Variante:

01.
@ECHO off 
02.
 
03.
cls 
04.
 
05.
SET ip=192.168.0. 
06.
SET log=ips.txt 
07.
 
08.
IF EXIST %log% DEL %log% && ECHO Datei wurde gelöscht 
09.
IF EXIST %log% NEQ 0 ECHO Datei konnte nicht gelöscht werden! & GOTO :eof 
10.
 
11.
FOR /L %%i IN (0,1,255) DO ( 
12.
 	ping -n 1 -w 5 %ip%%%i|find "TTL=" && ECHO %ip%%%i >> %log% || echo %ip%%%i nicht erreichbar 
13.
)
Bitte warten ..
Mitglied: TuXHunt3R
09.08.2007 um 21:28 Uhr
Da hat mir Copy-Paste einen Streich gespielt.

Nun läuft es
Bitte warten ..
Mitglied: Seltermann
10.08.2007 um 11:35 Uhr
Es kommt immer noch die gleiche Fehlermeldung!
Bitte warten ..
Mitglied: TuXHunt3R
10.08.2007 um 12:58 Uhr
Es zerreisst immer die Formatierung, wenn ich die korrigierte Version speichern will.
Werde mich an den Support wenden.....
Bitte warten ..
Mitglied: Seltermann
10.08.2007 um 14:45 Uhr
Du musst den Batch-Code mit
01.
####green|[Batch-Code]####red|
einklammern.
Bitte warten ..
Mitglied: TuXHunt3R
11.08.2007 um 16:41 Uhr
Der <code>-Block hat einen Bock drin. Alle grösseren Code-Blöcke werden gar nicht angezeigt.
[Webmaster 12.08.2007: Codeblock geht wieder]

[TuXHunT3R 14.08.2007: Hallelujah!!!]
Bitte warten ..
Mitglied: Seltermann
11.08.2007 um 22:04 Uhr
Oben steht bei dir <nocode> und unten </code>

Das muss aber
01.
####green|[hier steht der Batch-Code]####red|
heißen.
Bitte warten ..
Mitglied: Sys3D
08.02.2008 um 10:50 Uhr
Hi!
Also wenn ich das file starte, blinkt es nur einmal kurz auf und das wars.... ?¿

Warum denn das? OS: WinXP Home SP2
Bitte warten ..
Mitglied: TuXHunt3R
08.02.2008 um 17:55 Uhr
@ Symanic

Starte das Teil mal aus der Kommandozeile direkt und poste die Fehlermeldung.
Bitte warten ..
Mitglied: TuXHunt3R
28.07.2008 um 17:55 Uhr
Da ich Ferien habe und darum etwas Zeit, habe ich das Ding mal in PowerShell umgeschrieben. Hier ist der Code:

01.
# ******************************************* 
02.
# * SubnetWalk.ps1                          * 
03.
# * ==============                          * 
04.
# * Pingt alle IP-Adressen eines C-Netzes   * 
05.
# * und listet alle pingbaren Geräte auf    * 
06.
# * History:                                * 
07.
# * TuXHunT3R - 11.06.2007 - New Batch      * 
08.
# * TuXHunT3R - 28.07.2008 - Recoded in PSL * 
09.
# ******************************************* 
10.
 
11.
############################################################################### 
12.
# Funktionen: 
13.
# =========== 
14.
 
15.
function fcnTitel { 
16.
	Write-Host " " 
17.
	Write-Host "________      ______             ________       __      ___________  " -ForegroundColor cyan 
18.
	write-host "__  ___/___  ____  /_______________  /__ |     / /_____ ___  /__  /__" -ForegroundColor cyan 
19.
	Write-Host "_____ \_  / / /_  __ \_  __ \  _ \  __/_ | /| / /_  __ `/_  /__  //__/" -ForegroundColor cyan 
20.
	Write-Host "____/ // /_/ /_  /_/ /  / / /  __/ /_ __ |/ |/ / / /_/ /_  / _  ,<   " -ForegroundColor cyan 
21.
	Write-Host "/____/ \__,_/ /_.___//_/ /_/\___/\__/ ____/|__/  \__,_/ /_/  /_/|_|  " -ForegroundColor cyan 
22.
	Write-Host " " 
23.
	Write-Host "Coded 2007 as Windows Batch, " 
24.
	Write-Host "recoded in PowerShell Scripting Language @ the 28.07.2008" 
25.
	Write-Host "-------------------------------------------------------------------------" -ForegroundColor cyan 
26.
	Write-Host " " 
27.
	write-host " " 
28.
29.
 
30.
function fcnFusszeile { 
31.
	Write-Host " " 
32.
	Write-Host " " 
33.
	Write-Host "-------------------------------------------------------------------------" -ForegroundColor cyan 
34.
	Write-Host "by TuXHunT3R" 
35.
	Write-Host " " 
36.
37.
 
38.
function fcnManual { 
39.
	fcnTitel 
40.
	write-host "Listet die pingbaren Geräte im angegebenen Subnetz auf. " 
41.
	write-host "Dieses Script funktioniert nur bei Subnetzen mit einer 24-bittigen Subnetzmaske," 
42.
	write-host "d.h. bei C-Class-Netzen (255.255.255.0)!" 
43.
	Write-Host " " 
44.
	Write-Host " " 
45.
	write-host "Starte Batch folgendermassen:" 
46.
	write-host "SubnetWalk NetzID" 
47.
	Write-Host " " 
48.
	write-host "Beispiel:" 
49.
	write-host "SubnetWalk 192.168.0" 
50.
	Write-Host " " 
51.
	Write-Host " " 
52.
	write-host "Anmerkung:" 
53.
	write-host "Eine IP-Adresse besteht immer aus Netz-ID (welche u.a. das Subnetz definiert)" 
54.
	write-host "und einer Host-ID (welche den entsprechenden Client definiert)." 
55.
	write-host "Bei einem C-Class-Netz (d.h. einem Netz mit der Subnetzmaske 255.255.255.0)" 
56.
	write-host "besteht die Netz-ID immer aus den ersten drei Bytes." 
57.
	Write-Host " " 
58.
	write-host "Beispiel:" 
59.
	write-host "Die Netz-ID der IP-Adresse 192.168.0.101 ist in einem C-Netz (d.h. mit der" 
60.
	write-host "Subnetzmaske 255.255.255.0) 192.168.0" 
61.
	fcnFusszeile 
62.
63.
64.
65.
############################################################################### 
66.
 
67.
Clear-Host 
68.
 
69.
$NetzID = $Args[0] 
70.
 
71.
switch ($NetzID) { 
72.
	"" {fcnManual} 
73.
	"?" {fcnManual} 
74.
	"/?" {fcnManual} 
75.
	"-?" {fcnManual} 
76.
	"-h" {fcnManual} 
77.
	"--h" {fcnManual} 
78.
	"-help" {fcnManual} 
79.
	"--help" {fcnManual} 
80.
	"help" {fcnManual} 
81.
	default{ 
82.
		Write-Host " " 
83.
		Write-Host " " 
84.
		Write-Host " " 
85.
		Write-Host " " 
86.
		Write-Host " " 
87.
		Write-Host " " 
88.
		Write-Host " " 
89.
		fcnTitel 
90.
		Remove-Item $env:temp\SubnetWalk.log -force | Out-Null 
91.
		$Gestartet = Get-Date -Format G 
92.
		for ($zaehler=1; $zaehler -lt 255; $zaehler++) { 
93.
			$address= $NetzID + "." + $zaehler 
94.
			$ping = get-wmiobject win32_pingstatus -filter "Address='$address'" 
95.
			if ($ping.statuscode -eq "0") { 
96.
				$ping.ProtocolAddress | Out-File -FilePath $env:temp\SubnetWalk.log -Encoding default -Append 
97.
98.
			$PercentComplete = (100/254)*$zaehler 
99.
			Write-Progress -activity "Scan des Subnetz $NetzID.XXX" -Status "$zaehler/254" -PercentComplete $PercentComplete 
100.
101.
		$Beendet = Get-Date -Format G 
102.
		Write-Host "Pingbare IP-Adressen im Subnetz $NetzID.XXX" 
103.
		Write-Host "==============================================" 
104.
		Write-Host "Gestartet: $Gestartet" 
105.
		write-host "Beendet:   $Beendet" 
106.
		Write-Host " " 
107.
		Get-Content $env:temp\SubnetWalk.log 
108.
		#Remove-Item $env:temp\SubnetWalk.log -force 
109.
		fcnFusszeile 
110.
111.
112.
 
Der Vorteil dieser Version: Es läuft etwas schneller als die Batch-Version und hat eine schicke Fortschrittsanzeige . Try and have Fun....
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
DNS
Hostnames für mehrere IPs ermitteln (3)

Frage von Oneil-1989 zum Thema DNS ...

Batch & Shell
gelöst Batch oder PS um Datenvolumen zu ermitteln (13)

Frage von rudeboy zum Thema Batch & Shell ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...