scapeg0at

Unterschiedliche IP Adressen einer netstat Ausgabe zählen

Die Idee ist, die Anzahl der über den Port 80 mit einem Server kommunizierenden Clienten fest zu stellen.
Hier führen sicherlich viele Wege nach Rom, jedoch ist die Einbindung einer Batch Datei in ein Monitoring System gewünscht.
Folgender Befehl gibt schon einmal die richtigen Client-Adressen aus und zählt die Zeilen.

netstat -np tcp | find "[NetworkIP]:80" /c

Jedoch sind gleiche IP Adressen mehrfach aufgeführt und werden dementsprechnd mehrfach gezählt.
e.g.
TCP 10.32.6.35:80 10.32.2.50:54866 WARTEND
TCP 10.32.6.35:80 10.32.2.50:54873 WARTEND
TCP 10.32.6.35:80 10.32.2.50:54874 WARTEND
TCP 10.32.6.35:80 10.32.2.60:54867 WARTEND
TCP 10.32.6.35:80 10.32.2.60:54878 WARTEND
TCP 10.32.6.35:80 10.32.2.60:54879 WARTEND
usw.

Ist es möglich, die Anzahl unterschiedlicher Ip Adressen zu ermitteln?

Lieben Dank im Vorraus!
LG Scapi
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 399383

Url: https://administrator.de/forum/unterschiedliche-ip-adressen-einer-netstat-ausgabe-zaehlen-399383.html

Ausgedruckt am: 17.05.2025 um 10:05 Uhr

NetzwerkDude
Lösung NetzwerkDude 25.01.2019 um 10:58:00 Uhr
Goto Top
Auch wenn das nach einer tollen RegEx übung klingt, wäre es über PowerShell schneller mit:

(Get-NetTCPConnection | Where-Object {$_.localport -eq 80} | Select-Object -ExpandProperty RemoteAddress | Sort-Object -Unique).count
colinardo
Lösung colinardo 25.01.2019 aktualisiert um 11:35:42 Uhr
Goto Top
Oder wenn man es auch ohne Get-NetTCPConnection machen möchte, weil z.B. das OS das CMDlet nicht anbietet weil es zu alt ist (Wie z.B. Win7):
@echo off
for /f %%a in ('powershell -Executionpolicy Bypass -Command "([System.Net.NetworkInformation.IPGlobalProperties]::GetIPGlobalProperties().GetActiveTCPConnections() | ?{$_.LocalEndpoint.Port -eq 80} | group {$_.RemoteEndpoint.Address}).Count"') do set "num=%%a"  
echo %num%
Oder als Plain Batch
@echo off &setlocal ENABLEDELAYEDEXPANSION
set "last=" &set /a cnt=0  
for /f "tokens=3" %%a in ('netstat -np tcp ^| find "[NetworkIP]:80"') do for /f "tokens=1 delims=:" %%b in ("%%a") do for /f "delims=" %%c in ('echo %%b^|sort') do (if "%%c" NEQ "!last!" set /a cnt+=1 &set "last=%%c")  
echo %cnt%
Eindeutige Hosts hinter einem NAT-Host kannst du mit der simplen Methode natürlich nicht zählen.

Grüße Uwe
Lochkartenstanzer
Lösung Lochkartenstanzer 25.01.2019 um 11:15:30 Uhr
Goto Top
Zitat von @scapeg0at:

Ist es möglich, die Anzahl unterschiedlicher Ip Adressen zu ermitteln?

Jupp:

netstat -nt  |  grep ":80" | gawk -F ":" ' { print $2 } | sort -u | wc 

lks
scapeg0at
scapeg0at 25.01.2019 um 11:25:22 Uhr
Goto Top
Vielen lieben Dank für die schnelle Hilfe. Alle Lösungen haben das Erwünschte Ergebnis gebracht. Haben uns für Uwes Lösung entschieden, besonderen Dank also an dich!

LG