scapeg0at
Goto Top

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

Content-Key: 399383

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

Printed on: April 24, 2024 at 14:04 o'clock

Member: NetzwerkDude
Solution NetzwerkDude Jan 25, 2019 at 09:58:00 (UTC)
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
Member: colinardo
Solution colinardo Jan 25, 2019 updated at 10:35:42 (UTC)
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
Member: Lochkartenstanzer
Solution Lochkartenstanzer Jan 25, 2019 at 10:15:30 (UTC)
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
Member: scapeg0at
scapeg0at Jan 25, 2019 at 10:25:22 (UTC)
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