Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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

Problem mit for - Token falsch befüllt?

Frage Entwicklung Batch & Shell

Mitglied: christiank

christiank (Level 1) - Jetzt verbinden

16.02.2008, aktualisiert 18:55 Uhr, 3663 Aufrufe, 4 Kommentare

Hier mal die Ausgangslage.

scanlog.txt
01.
hinkelstein [192.168.1.1] 23 (telnet): connection refused 
02.
hinkelstein [192.168.1.1] 22 (?) open 
03.
hinkelstein [192.168.1.1] 21 (ftp): connection refused 
04.
hinkelstein [192.168.1.1] 20 (ftp-data): connection refused 
05.
hinkelstein [192.168.1.1] 53 (domain) open 
06.
hinkelstein [192.168.1.1] 445 (microsoft-ds) open 
07.
hinkelstein [192.168.1.1] 444 (?): connection refused 
08.
hinkelstein [192.168.1.1] 443 (https) open 
09.
sent 0, rcvd 0
Batch File
01.
@echo off 
02.
set file=scanlog.txt 
03.
 
04.
FOR /F "tokens=1,2,3,4,5*" %%a in (%file%) do ( 
05.
	if not %%e=="" ( 
06.
		if not %%e==open ( 
07.
			echo Port %%c %%e %%f 
08.
			call :closed %%c 
09.
10.
11.
12.
 
13.
echo Closed ports: %closed% 
14.
 
15.
:closed 
16.
if defined closed (set closed=%closed% %1) else (set closed=%1) 
17.
goto :eof

Ausgabe
01.
Port 23 connection refused 
02.
Port 21 connection refused 
03.
Port 20 connection refused 
04.
Port 444 connection refused 
05.
Port rcvd 
06.
Closed ports: 23 21 20 444 rcvd
Nun meine Frage:
Wieso kommt in der ausgabe immer "rcvd" vor? In der for schleife wird doch extra abgefragt, ob %%e nicht leer ist.
Kann mir das einer erklären und wie ich das Problem weg bekomme?
Und wo Ich doch schon mit Probemen komme, hat viellcht noch jemand ne Idee wie ich die Ports austeigend dastellen lassen kann?
Also so: Closed ports: 20 21 23 444
und nicht so: Closed ports: 23 21 20 444
Aber erstmal muß das rcvd weg.
Mitglied: miniversum
16.02.2008 um 14:16 Uhr
Weil du dann nichts mit "" vergleichst. Ändere die Bedingung mal so:
if not "%%e"=="" (
oder so:
if "%%e" neq "" (

miniversum
Bitte warten ..
Mitglied: Dani
16.02.2008 um 14:28 Uhr
Hallo,
tausche einfach den Schleifenkörper aus:
01.
... 
02.
FOR /F "tokens=1,2,3,4,5*" %%a in ('type "%file%" ^| findstr /i /v "rcvd"') do ( 
03.
....
Somit werden alle Zeilen berücksichtigt, in denen das Wort "rvcd" nicht vorkommt.

Zur Sortierungwunsch kann ich dir leider nichts sagen...Batch ist eher so nebenher. *g* Dazu gibt es andere hier im Forum.


Grüße
Dani
Bitte warten ..
Mitglied: miniversum
16.02.2008 um 14:30 Uhr
Das mit der Portsortierung sollte so gehen:
01.
@echo off 
02.
set file=scanlog.txt 
03.
set tempfile="%temp%\sorttemp.txt" 
04.
 
05.
if exist %tempfile% del %tempfile% 
06.
FOR /F "tokens=1,2,3,4,5*" %%a in (%file%) do ( 
07.
	if not %%e=="" ( 
08.
		if not %%e==open ( 
09.
			echo Port %%c %%e %%f 
10.
			echo %%c>>%tempfile% 
11.
12.
13.
14.
 
15.
set "closed=" 
16.
FOR /F "delims=" %%i in ('sort %tempfile%') do call set "closed=%%closed%%%%i" 
17.
del %tempfile% 
18.
 
19.
echo Closed ports: %closed%
Bitte warten ..
Mitglied: christiank
16.02.2008 um 18:55 Uhr
Hat wie immer super geklappt.
Ich bin begeistert.
Bitte warten ..
Ähnliche Inhalte
Sicherheit
gelöst OTP Hardware Token ohne zentrale Infrastruktur (3)

Frage von eglipeter zum Thema Sicherheit ...

Batch & Shell
CMD cURL Access Token parsen (2)

Frage von maddig zum Thema Batch & Shell ...

Exchange Server
Exchange OWA Problem Kennwort falsch (16)

Frage von Henere zum Thema Exchange Server ...

Voice over IP
gelöst VoIP - Was kann man alles falsch machen? (20)

Frage von MegaGiga zum Thema Voice over IP ...

Neue Wissensbeiträge
Humor (lol)

Taschenrechner in IOS kaputt!

(5)

Information von Lochkartenstanzer zum Thema Humor (lol) ...

Sicherheit

Kanadischer Geheimdienst veröffentlicht erstmals Sicherheitssoftware

(3)

Information von BassFishFox zum Thema Sicherheit ...

Virtualisierung

Docker Monitoring und Steuerung per "sen"

Tipp von Frank zum Thema Virtualisierung ...

Heiß diskutierte Inhalte
Windows 7
Abbruch bei Brennvorgang (19)

Frage von Simulant zum Thema Windows 7 ...

Router & Routing
Externe IP von innen erreichbar machen (16)

Frage von Windows10Gegner zum Thema Router & Routing ...

Firewall
WIndows 7 RDP Massen Angriff (14)

Frage von Motte990 zum Thema Firewall ...