Batch Capture IPs di Netstat in ingresso come variabile

Sto cercando di capire se c'è un modo per catturare (e se ansible, registrare) gli indirizzi IP visualizzati dal command 'netstat'. Sto provando a fare uno script che aspetta un ping da un host specifico. C'è un modo per catturare queste informazioni in variables funzionabili di quelle che posso utilizzare in uno script? Ho condotto l'output in un file di text, ma non riesco ancora a comprendere alcun modo per andare a catturare l'IP dal file di text in variables

Grazie in anticipo

se si dispone di un file di text con IP e si desidera solo gli IP, allora netstat diventa irrilevante.

get grep da gnuwin32 e la giusta regex. Questo lo farà

 C:\blah>grep -oP (\d{1,3}\.){1,3}\d{1,3} filewithips 

provare arp -a>myfile o netstat -aon> a allora hai un file di IP tra altre informazioni e vuoi solo che i comandi ora eseguano quel command grep che ti ho dato e che hai solo IP

o questo

 C:\>netstat -aon | grep -oP (\d{1,3}\.){1,3}\d{1,3} 

emetterà un elenco di IP

Potresti eseguire un ciclo per che solo leggendo each row in una variabile

allora non è una questione di leggere IP che legge le righe di un file.

Questo script illustra come salvare gli output IP di netstat in variables all'interno di PowerShell

Basta eseguire lo script in PowerShell ISE, aprire un nuovo browser, visitare il sito http://www.google.com e vedere cosa succede.

 $allIPs = [System.Net.Dns]::GetHostAddresses("www.google.com") $myIP = $allIPs[0].IPAddressToString while ($true) { cls netstat -n | select-string "$myIP.*ESTABLISHED" | foreach { $part = $_.line.split(' ',[System.StringSplitOptions]::RemoveEmptyEntries) $localIP = $part[1] -replace ":.*", "" $remoteIP = $part[2] -replace ":.*", "" write-host $localIP $remoteIP } sleep 2 } 

Una volta iniziato, interroga tutte le connessioni con netstat -n each 2 secondi ( while ($true) insieme al sleep 2 ).

Per velocizzare il netstat, il parametro -n (numbersco) è il parametro più importnte in quanto non vengono eseguite ricerche DNS. È ansible leggere di più su altri parametri come -a e -o a Technet

Successivamente, PowerShell filtra solo le connessioni stabilite ( select-string "$myIP.*ESTABLISHED" ) ad esempio http://www.google.com. Questo è solo un esempio per mostrare come funziona. Modificare

 $myIP = $allIPs[0].IPAddressToString 

al IP che stai aspettando un ping

 $myIP = '192.168.1.1' 

L'ultima parte è dividere le righe da spazi ( $_.line.split(' ' ), rimuoverli successivamente ( [System.StringSplitOptions]::RemoveEmptyEntries ), rimuovere la port ( -replace ":.*", "" ) e salvare i risultati alle rispettive variables.

Puoi fare quello che vuoi con loro. Li ho appena echeggiati con write-host $localIP $remoteIP