bubifix
Goto Top

Batch - Formatierung der Ausgabedatei nicht so wie gewünscht

Hallo zusammen,

ich bin seit ein paar Tagen hier Mitglied und habe mir aus verschiedenen Vorlagen eine Batch zusammengestellt, um einen internen Netzwerkscan durchführen zu können. das Ergebnis wird in eine datei geschrieben.
Das Ergebnis ist so wie ich es möchte, allerdings ist die Zusammenstellung in der Datei nicht so wie gewünscht. Hier erst einmal die Batch:

@ECHO OFF

SETLOCAL

CLS
ECHO Willkommen zum internen Netzwerk-Scan
ECHO.
SET /P ip_d=Geben Sie den Domain-Namen ohne Endung (bspw. t-online) ein: 
SET /P ip=Geben Sie den über IP-Bereich (bspw. 190.1.2.) an: 
SET /P ip_s=Geben Sie den Startwert ein: 
SET /P ip_e=Geben Sie den Endwert (max. 254) ein: 
SET log=%ip_d%_ip_scan.txt

IF EXIST %log% DEL %log% && ECHO. && ECHO Die existierende Datei %log% wurde erfolgreich entfernt!
IF EXIST %log% NEQ 0 ECHO Datei konnte nicht entfernt werden! & GOTO :eof

ECHO.
ECHO Der Scan startet jetzt...
ECHO.

FOR /L %%i IN (%ip_s%,1,%ip_e%) DO (
	FOR /F "tokens=5 delims=. " %%A IN ('PING -a %ip%%%i -n 1 ^| FIND "[%ip%%%i]"') DO (  
		ECHO %%A;>> %log%
		)
	ping -n 1 -w 5 %ip%%%i|find "TTL=" && ECHO %ip%%%i;%DATE%;%TIME%;Ping: OK>> %log% || ECHO.%ip%%%i;%DATE%;%TIME%;Ping: Error>> %log%  
)

ECHO.
ECHO.
ECHO Der interne Netzwerkscan von %ip%%ip_s% bis %ip%%ip_e% wurde beendet und erfolgreich in der Datei %log% gespeichert!
ECHO.
pause

Das Ergebnis in der Datei sieht so aus:

172.16.2.0;09.04.2009;16:16:33,72;Ping: Error
exchange;
172.16.2.1;09.04.2009;16:16:33,72;Ping: OK
faxserver;
172.16.2.2;09.04.2009;16:16:33,72;Ping: OK
172.16.2.3;09.04.2009;16:16:33,72;Ping: OK
printserver;
172.16.2.4;09.04.2009;16:16:33,72;Ping: OK
wisrv;
172.16.2.5;09.04.2009;16:16:33,72;Ping: OK
certsrv;
172.16.2.6;09.04.2009;16:16:33,72;Ping: OK
opensuse;
172.16.2.7;09.04.2009;16:16:33,72;Ping: Error
dms;
172.16.2.8;09.04.2009;16:16:33,72;Ping: Error
172.16.2.9;09.04.2009;16:16:33,72;Ping: Error
trmsrv6;
172.16.2.10;09.04.2009;16:16:33,72;Ping: OK
trmsrv7;
172.16.2.11;09.04.2009;16:16:33,72;Ping: OK
TESTNAVISION;
172.16.2.12;09.04.2009;16:16:33,72;Ping: OK

Mein Wunsch ist, das Hostname und IP, Datum, Zeit und Ping-Status in einer Zeile stehen. Kann mir da jemand einen Tipp geben.

Vielen Dank für Eure Mühe.

bubifix

Content-Key: 113620

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

Printed on: April 25, 2024 at 03:04 o'clock

Member: Knumskull
Knumskull Apr 09, 2009 at 14:41:29 (UTC)
Goto Top
Ich weis zwar nicht genau, was diese Zeile macht, aber geht das so?

FOR /L %%i IN (%ip_s%,1,%ip_e%) DO (
	FOR /F "tokens=5 delims=. " %%A IN ('PING -a %ip%%%i -n 1 ^| FIND "[%ip%%%i]"') DO (  
		ping -n 1 -w 5 %ip%%%i|find "TTL=" && ECHO %%A;%ip%%%i;%DATE%;%TIME%;Ping: OK>> %log% || ECHO.%%A.%ip%%%i;%DATE%;%TIME%;Ping: Error>> %log%  
              )
)

alles ohne gewähr face-smile
Member: Biber
Biber Apr 09, 2009 at 14:44:37 (UTC)
Goto Top
Moin bubifix,

willkommen im Forum.

Andere Deine FOR-Konstruktion so ab:
@ECHO OFF & SETLOCAL
....

FOR /L %%i IN (%ip_s%,1,%ip_e%) DO (
             FOR /F "tokens=5 delims=. " %%A IN ('PING -a %ip%%%i -n 1 ^| FIND "[%ip%%%i]"') DO (  
	ping -n 1 -w 5 %ip%%%i|find "TTL=" && ECHO %%A %ip%%%i;%DATE%;%TIME%;Ping: OK>> %log% || ECHO.%%A %ip%%%i;%DATE%;%TIME%;Ping: Error>> %log%  
))
...

Grüße
Biber
Member: bubifix
bubifix Apr 14, 2009 at 08:02:13 (UTC)
Goto Top
Hallo Biber, hallo Knumskull,

die Formatierung und Ausgabe in die Datei funktioniert so wie gewünscht, allerdings werden dort nur noch die pingbaren Adressen aufgelistet.

Zur Lösung dieses Problems, müsste man nach "[%ip%%%i]" und "TTL=" gleichzeitg suchen. Geht das überhaupt?

Gruß

bubifix
Member: bubifix
bubifix Apr 14, 2009 at 14:44:32 (UTC)
Goto Top
Hallo,

nur zur Info. Hier ist die fertige Lösung:

@ECHO OFF & SETLOCAL

CLS
ECHO Willkommen zum internen Netzwerk-Scan
ECHO.
SET /P ip_d=Geben Sie den Domain-Namen ohne Landeskennung (bspw. t-online) ein: 
SET /P ip_1=Geben Sie den 1. Block des IP-Bereichs an: 
SET /P ip_2=Geben Sie den 2. Block des IP-Bereichs an:
SET /P ip_3=Geben Sie den 3. Block des IP-Bereichs an:
SET ip=%ip_1%.%ip_2%.%ip_3%.
SET /P ip_s=Geben Sie den 4. Block des IP-Bereichs als Startwert (min. 0) ein: 
SET /P ip_e=Geben Sie den 4. Block des IP-Bereichs als Endwert (max. 254) ein: 
SET log=%ip_d%_ip_scan.txt

IF EXIST %log% DEL %log% && ECHO. && ECHO Die existierende Datei %log% wurde erfolgreich entfernt!
IF EXIST %log% NEQ 0 ECHO Datei konnte nicht entfernt werden! & GOTO :eof

ECHO.
ECHO Der Scan startet jetzt...
ECHO.

FOR /L %%i IN (%ip_s%,1,%ip_e%) DO (
             FOR /F "tokens=5 delims=. " %%A IN ('PING -a -n 1 %ip%%%i ^| FIND "Daten:"') DO (  
	ping -n 1 -w 5 %ip%%%i|find "TTL=" && ECHO.%%A;%ip%%%i;%DATE%;%TIME%;Ping: OK>> %log% || IF "%%A"=="%ip_1%" (ECHO.unknown host;%ip%%%i;%DATE%;%TIME%;Ping: ERROR>> %log%) ELSE (ECHO.%%A;%ip%%%i;%DATE%;%TIME%;Ping: ERROR - DNS checken!>> %log%)  
))

ECHO.
ECHO.
ECHO Der interne Netzwerk-Scan von %ip%%ip_s% bis %ip%%ip_e% wurde beendet und erfolgreich in der Datei %log% gespeichert!
ECHO.
pause

Gruß

bubifix
Member: tdkcbundi
tdkcbundi Oct 25, 2017 at 11:27:05 (UTC)
Goto Top
Hallo,

auf der Suche nach einer Lösung bin ich auf das Script gekommen. Es erfüllt genau das was ich brauche. Nur dazu hätte ich eine Frage. Wenn ich das script starte läuft es schon seit 2 Std und endet nicht. Wo könnte der Fehler liegen?