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

IP Adressen aus Textdatei mit Hostnamen auflösen.

Frage Entwicklung Batch & Shell

Mitglied: volker01

volker01 (Level 1) - Jetzt verbinden

28.03.2013 um 20:32 Uhr, 2936 Aufrufe, 10 Kommentare

Hallo Gemeinde,
nachdem ich schon häufig bei fündig wurde,
versuche ich mal meine erste Frage zu formulieren:

Ich verwende zur Fehleranalyse ein Batch-Datei als IP-Scanner.Das funktioniert auch gut.
Als Ergebnis erhalte ich eine Text-Datei mit IP-Adressen von Geräten die antworten.
Nun möchte ich im zweiten Schritt per batch die gefundenen IP-Adressen mit ping -a auch auch die Hostnamen auflösen lassen.
Ich habe noch keine Vorstellung wie ich das umsetzten kann.

Beispiel einer IP Textdatei:
192.168.178.1
192.168.178.2
192.168.178.7
192.168.178.8

Viele Grüße
Volker01
Mitglied: bastla
28.03.2013 um 20:38 Uhr
Hallo volker01!

Mit einem "ping -a" etwa so:
01.
@echo off & setlocal 
02.
for /f %%i in (IP.txt) do call :ProcessIP %%i 
03.
goto :eof 
04.
 
05.
:ProcessIP 
06.
set "Host=" 
07.
for /f "tokens=2" %%a in ('ping -a -n 1 %1') do if not defined Host set "Host=%%a" 
08.
if "%Host%" neq "wird" echo %1: %Host% 
09.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: volker01
28.03.2013 um 21:03 Uhr
Hallo Bastla,
das war ja superschnell,

ich hab's gerade mal getestet, das Ergebnis wird aber nicht angezeigt:
mit mtee sieht's der Ablauf so aus:

20:55:23.279 C:\Users\ve02\Desktop\ip>for /F %i in (IP.txt) do call :ProcessIP %i
20:55:23.279 C:\Users\ve02\Desktop\ip>call :ProcessIP 192.168.178.1
20:55:23.279 C:\Users\ve02\Desktop\ip>set "Host="
20:55:23.279 C:\Users\ve02\Desktop\ip>for /F "tokens=2" %a in ('ping -a -n 1 192.168.178.1') do if not defined Host set "Host=%a"
20:55:23.365 C:\Users\ve02\Desktop\ip>if not defined Host set "Host=wird"
20:55:23.365 C:\Users\ve02\Desktop\ip>if not defined Host set "Host=von"
20:55:23.365 C:\Users\ve02\Desktop\ip>if not defined Host set "Host=fr"
20:55:23.365 C:\Users\ve02\Desktop\ip>if not defined Host set "Host=Gesendet"
20:55:23.365 C:\Users\ve02\Desktop\ip>if not defined Host set "Host=Zeitangaben"
20:55:23.365 C:\Users\ve02\Desktop\ip>if not defined Host set "Host=="
20:55:23.371 C:\Users\ve02\Desktop\ip>if "wird" NEQ "wird" echo 192.168.178.1: wird
20:55:23.371 C:\Users\ve02\Desktop\ip>goto :eof

Grüße
Volker01
Bitte warten ..
Mitglied: MrNetman
28.03.2013 um 21:17 Uhr
warum neu erfinden?

angry IP-Scanner liefert das sofort und schnell.
http://angryip.org/w/Home
Sogar noch mit der Möglichkeit einen Portscan anzuhängen. für z.B: Serverdienste und so.

Dann etwas komplexer: Superscan v4 von McAfee
Soft Perfect Network Scanner
Advanced IP Scanner V2

Nutze ich immer.

Gruß
Netman
Bitte warten ..
Mitglied: Endoro
28.03.2013, aktualisiert um 21:26 Uhr
Naja, noch ein Versuch:

01.
@echo off &setlocal 
02.
for /f %%i in (ip.txt) do for /f "tokens=2" %%j in ('ping -a -n 1 %%i^|find "["') do echo %%i = %%j


bb
Bitte warten ..
Mitglied: volker01
28.03.2013 um 22:33 Uhr
@ Netman: Ich suche eine Batch Lösung, Danke.
@ bastla und mfm4aa: mit tokens=5 klappt's.
(Ping wird ausgeführt für)

Frage ist also gelöst.
Vielen Dank für Eure Hilfe. Allein hätte ich das nie hinbekommen.

Grüße Volker01
Bitte warten ..
Mitglied: bastla
28.03.2013, aktualisiert um 23:25 Uhr
Hallo volker01!

Wenn, wie in diesem Fall, "ping -a" den Namen nicht auflöst, sondern nur
Ping wird ausgeführt für 192.168.178.1 mit 32 Bytes Daten:
ausgibt [Edit] hatte zum Test nur ein "unbekanntes" Gerät angepingt, sodass dann natürlich nur die Adresse und nicht der Name ausgegeben wurde [/Edit], wird natürlich nix angezeigt (dafür sorgt die Abfrage in Zeile 8).

Eigentlich wäre aber für die Namensauflösung ohnehin "nslookup" zu verwenden - das sähe dann so aus:
01.
@echo off & setlocal 
02.
for /f %%i in (IP.txt) do call :ProcessIP %%i 
03.
goto :eof 
04.
 
05.
:ProcessIP 
06.
set "Host=" 
07.
for /f "tokens=2" %%a in ('nslookup %1^|findstr /b "Name:"') do echo %1: %%a 
08.
goto :eof
Wenn Du keinen FQDN haben willst, dann mit folgender Zeile 7:
for /f "tokens=2 delims=. " %%a in ('nslookup %1^|findstr /b "Name:"') do echo %1: %%a
Grüße
bastla
Bitte warten ..
Mitglied: Endoro
28.03.2013 um 23:31 Uhr
Ich dachte, dieses wird gesucht:

01.
Ping fritz.box [192.168.178.1] mit 32 Bytes Daten:
Sonst gibt's auch keine Brackets im Ping output.

nslookup kannte ich bisher gar nicht, schick!


bb
Bitte warten ..
Mitglied: volker01
29.03.2013 um 01:02 Uhr
Hallo Bastla,
die Lösung mit nslookup ist noch schöner und auch viel schneller als ping -a.
Ergebnis Beispiel:
192.168.178.1: fritz.box
192.168.178.2: SERVER.fritz.box
*** 192.168.178.7 wurde von fritz.box nicht gefunden: Non-existent domain

Wenn man möchte, kann man ja mit findstr die Zeilen ohne Namensauflösung noch filtern.
Auch die Lösung ohne FQDN funktioniert.


Grüße
Volker01
Bitte warten ..
Mitglied: volker01
29.03.2013 um 18:58 Uhr
Hier jetzt mein fertiges Ergebnis.
Scannt Netzwerk nach aktiven IP-Geräten, versucht Hostnamen aufzulösen.
Legt eine Textdatei mit dem Ergebnis im gleichen Vezeichnis ab.
Bereinigt Anzahl der Logs. (Behalte n neueste Logs).
Auswahlmenü für Eingabe IP-Bereich, Ping-Anzahl und Antwortzeit, manuelle Wiederholung oder automatischer Dauertest.

01.
@ECHO off & setlocal 
02.
title Find IP-Adressen 
03.
REM   find_IP Version 2.0 veh 2013-03-29 
04.
cd /D %~dp0 
05.
 
06.
	REM Standard-Vorgabe: 
07.
	SET "ping_anzahl_A=1" 
08.
	SET "ping_wartezeit_A=200" 
09.
	SET "Anzahl_Logfiles=40" 
10.
 
11.
REM == Aktuelles Datum und Uhrzeit werden formatiert und Variablen zugewiesen == 
12.
FOR /F "tokens=1-3 delims=/. " %%a in ('date/T') do set CDATE=%%c-%%b-%%a 
13.
FOR /F "tokens=1-2 delims=/: " %%a in ('time/T') do set CTime=%%a-%%b 
14.
if exist "ip_adressen.txt" ren "ip_adressen.txt" "ip_adressen_%CDATE% %CTime%.txt" 
15.
 
16.
ECHO. 
17.
ECHO     Aktuelles Netz: 
18.
ECHO     --------------- 
19.
ipconfig 
20.
ECHO. 
21.
ECHO. 
22.
ECHO. 
23.
ECHO     Finde IP-Adressen: 
24.
ECHO     ------------------ 
25.
ECHO. 
26.
ECHO     Es wird eine Textdatei mit IP-Adressen im gleichen Verzeichnis angelegt. 
27.
ECHO. 
28.
ECHO     Bitte geben Sie den ERSTEN TEIL des IP-Netzwerkes ein: 
29.
ECHO. 
30.
ECHO     Den OEFFENTLICHEN TEIL angeben: 
31.
ECHO     z.Bsp.:  192.168.178.  (inkl. letztem Punkt!) 
32.
ECHO. 
33.
ECHO. 
34.
ECHO Eingabe und Enter: 
35.
set /p ip= 
36.
Echo. 
37.
 
38.
ECHO.>> ip_adressen.txt 
39.
Echo Startzeit: %DATE% - %time%>> ip_adressen.txt 
40.
ECHO.>> ip_adressen.txt 
41.
 
42.
:wh 
43.
ECHO ANZAHL DER PING-VERSUCHE eingeben und Enter- oder 
44.
ECHO Enter = Standard = "%ping_anzahl_A%" 
45.
ECHO Eingabe: 
46.
set /p ping_anzahl= 
47.
 
48.
ECHO MAX. ANTWORT-WARTEZEIT auf Ping eingeben und Enter - oder 
49.
ECHO Enter = Standard = "%ping_wartezeit_A% ms" 
50.
ECHO Eingabe: 
51.
set /p ping_wartezeit= 
52.
 
53.
ECHO DAUERTEST? (laeuft bis zum manuellem Abbruch) 
54.
ECHO Enter = NEIN       1 und Enter für Dauertest 
55.
ECHO Eingabe: 
56.
set /p Dauertest= 
57.
 
58.
ECHO ===================================================>> ip_adressen.txt 
59.
ECHO      EIGENE IP-ADRESSE(N):>> ip_adressen.txt 
60.
ECHO ===================================================>> ip_adressen.txt 
61.
ipconfig /all>> ip_adressen.txt 
62.
ECHO.>> ip_adressen.txt && (ECHO.>> ip_adressen.txt) 
63.
ECHO. 
64.
 
65.
:wh2 
66.
ECHO. 
67.
if "%ping_anzahl%"=="" set ping_anzahl=%ping_anzahl_A% 
68.
if "%ping_wartezeit%"=="" set ping_wartezeit=%ping_wartezeit_A% 
69.
set "wh=" 
70.
if exist ip_temp.txt del ip_temp.txt >nul 
71.
if exist ip_temp2.txt del ip_temp2.txt >nul 
72.
 
73.
ECHO ===================================================>> ip_adressen.txt 
74.
ECHO      ERKANNTE IP-ADRESSE(N):>> ip_adressen.txt 
75.
ECHO ===================================================>> ip_adressen.txt 
76.
ECHO.>> ip_adressen.txt 
77.
ECHO Ping Anzahl=%ping_anzahl% >> ip_adressen.txt 
78.
ECHO Ping Wartezeit=%ping_wartezeit% >> ip_adressen.txt 
79.
ECHO.>> ip_adressen.txt 
80.
 
81.
ECHO Starte Scan: && ECHO ----------- && ECHO. 
82.
 
83.
for /L %%N IN (1, 1, 255) DO ( 
84.
        ECHO IP: %ip%%%N wird angepingt. 
85.
		REM -n Ping n-mal; -w Warte max. Mili-Sekunden auf Antwort. 
86.
        ping %ip%%%N -n %ping_anzahl% -w %ping_wartezeit% | find "TTL">> ip_temp2.txt && ECHO %ip%%%N>> ip_temp.txt && ECHO IP: %ip%%%N erkannt. 
87.
        Rem   ping %ip%%%N -n 1 | find "TTL" && ECHO %ip%%%N>> ip_temp.txt 
88.
89.
rem type ip_temp.txt>> ip_adressen.txt 
90.
rem ECHO.>> ip_adressen.txt 
91.
type ip_temp2.txt>> ip_adressen.txt 
92.
ECHO. 
93.
 
94.
ECHO.>> ip_adressen.txt 
95.
ECHO ===================================================>> ip_adressen.txt 
96.
ECHO      ERKANNTE Hostnamen: (nslookup)>> ip_adressen.txt 
97.
ECHO ===================================================>> ip_adressen.txt 
98.
ECHO.>> ip_adressen.txt 
99.
 
100.
ECHO. 
101.
for /f %%i in (ip_temp.txt) do call :ProcessIP %%i 
102.
goto next1 
103.
goto :eof 
104.
 
105.
:ProcessIP 
106.
set "Host=" 
107.
for /f "tokens=2" %%a in ('nslookup %1^|findstr /b "Name:"') do echo %1: %%a>> ip_adressen.txt 
108.
goto :eof 
109.
 
110.
:next1 
111.
 
112.
ECHO.>> ip_adressen.txt 
113.
ECHO ***************************************************>> ip_adressen.txt 
114.
ECHO.>> ip_adressen.txt 
115.
ECHO    Fertig - Endzeit: %DATE% - %time%>> ip_adressen.txt 
116.
ECHO.>> ip_adressen.txt 
117.
 
118.
cls 
119.
type ip_adressen.txt 
120.
 
121.
if "%Dauertest%"=="1" ECHO.>> ip_adressen.txt && ECHO.>> ip_adressen.txt && (ECHO *** DAUERTEST ***>> ip_adressen.txt) && ECHO.>> ip_adressen.txt 
122.
if "%Dauertest%"=="1" ECHO. && ECHO. && (ECHO *** DAUERTEST ***) && ECHO. && ECHO. && (goto wh2) 
123.
 
124.
ECHO. && ECHO. && ECHO. 
125.
ECHO   Wiederhole IP-Scan im selben Netz? 
126.
ECHO --------------------------------- 
127.
ECHO   Taste 1 und Enter = Wiederhole Scan. 
128.
ECHO. 
129.
ECHO   Enter = IP-Liste mit Datum speichern und Beenden. 
130.
ECHO. 
131.
set /p wh= 
132.
if "%wh%"=="1" ECHO. && (ECHO     Wiederhole IP-Scan) && ECHO. && (ECHO    *** WIEDERHOLE SCAN: ***>> ip_adressen.txt) && (ECHO.>> ip_adressen.txt) && (ECHO.>> ip_adressen.txt) && goto wh 
133.
if "%wh%"=="" goto End 
134.
 
135.
:End 
136.
ren "ip_adressen.txt" "ip_adressen_%CDATE% %CTime%.txt" 
137.
ECHO. 
138.
 
139.
REM Lösche alte ip_adressen Dateien, lasse Anzahl n neueste stehen. 
140.
FOR /f "skip=%Anzahl_Logfiles% delims=" %%i IN ('dir "ip_adressen*.txt" /a-d /b /o-d') DO ( 
141.
del "%%~i" 
142.
143.
if exist ip_temp.txt del ip_temp.txt >nul 
144.
if exist ip_temp2.txt del ip_temp2.txt >nul 
145.
EXIT 
146.
 
Bitte warten ..
Mitglied: Johnrif
26.11.2013 um 17:45 Uhr
Unterstützung, einen schnellen Scanner verwenden, wie z. B. Advanced IP Scanner: http://www.advanced-ip-scanner.com/de/
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
SAN, NAS, DAS
gelöst QNAP TS-453U - drei IP-Adressen für iSCSI , SMB , Management (2)

Frage von caspi-pirna zum Thema SAN, NAS, DAS ...

SAN, NAS, DAS
QNAP Installationsproblem wenn der Client mehre statische IP-Adressen hat (6)

Erfahrungsbericht von StefanKittel zum Thema SAN, NAS, DAS ...

Sicherheit
Mirai-Botnetz: Dyn bestätigt Angriff von zig-Millionen IP-Adressen

Link von runasservice zum Thema Sicherheit ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

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

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (15)

Frage von liquidbase zum Thema Windows Update ...

DSL, VDSL
Problem mit variernder Internetgeschwindigkeit (12)

Frage von schaurian zum Thema DSL, VDSL ...