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-ID: 113620

Url: https://administrator.de/forum/batch-formatierung-der-ausgabedatei-nicht-so-wie-gewuenscht-113620.html

Ausgedruckt am: 23.12.2024 um 02:12 Uhr

Knumskull
Knumskull 09.04.2009 um 16:41:29 Uhr
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
Biber
Biber 09.04.2009 um 16:44:37 Uhr
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
bubifix
bubifix 14.04.2009 um 10:02:13 Uhr
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
bubifix
bubifix 14.04.2009 um 16:44:32 Uhr
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
tdkcbundi
tdkcbundi 25.10.2017 um 13:27:05 Uhr
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?