PowerShell统计本地的网络连接(CMD吐数据互访)

需求:想把netstat-an吐出来的数据统计一下,看看本地连外地有多少个,外地连本地有多少个。协议分类什么的。

注意:因为netstat是cmd的命令,尽管在PowerShell下可以运行这个命令,但是吐出来的数据是没办法在加工的,它不是PowerShell原生命令。所以解决方法是把数据吐到一个csv文件中,然后针对CSV进行加工,最后得到需要的统计信息。

首先来一个中文版的,经过测试,需要PowerShell3.0以上,也就是Windows Server 2012以上的版本(windows8以上也可以)。

#Powered By kukisama   http://jiushu.blog.51cto.com/
netstat -an |Out-File -Encoding utf8 D:\3456.csv
$files = (Get-Childitem d:\3456.csv).pspath
$content = get-content $files
clear-content $files
add-Content $files -Value "协议,本地IP地址,端口,对端IP地址,对端端口,状态"
foreach ($line in $content -ne "活动连接" -ne "  协议  本地地址          外部地址        状态")
   {
   $liner = $line.Replace("[::1]","本地");
   $line = $liner
   $liner = $line.Replace("[::]","本地");
   $line = $liner
   $line = $liner -replace("\s{1,}" ,",")
   $liner = $line
   $line = $liner -replace(":{1,}" ," ")
   $liner = $line
   $liner = $line.Replace(",TCP","TCP")
   $line = $liner
   $liner = $line.Replace(",UDP","UDP")
   $line = $liner
   $line = $liner -replace("\s{1,}" ,",")
   $liner = $line
   $liner = $line.Replace("127.0.0.1","本地")
   $line = $liner
   $liner = $line.Replace("0.0.0.0","本地")
   $line = $liner
   $liner = $line.Replace("LISTENING","监听")
   $line = $liner
   $liner = $line.Replace("ESTABLISHED","等待")
   $line = $liner
   $liner = $line.Replace("TIME_WAIT","已建立连接")
   $line = $liner
   $liner = $line.Replace("CLOSE_WAIT","关闭等待")
   $line = $liner
   $liner = $line.Replace("SYN_SENT","同步发送")
   add-Content $files -Value $liner -Encoding Default
      } 

$bb = Import-Csv -Path d:/3456.csv -Encoding Default
echo "====================================="
echo "以下为协议计数"
$bb| Group-Object –Property:协议|select Name,Count|sort -Property count
echo "====================================="
echo "以下为您本地IP连接外端地址的统计数据"
$bb| Group-Object –Property:本地IP地址|select Name,Count|sort -Property count
echo "====================================="
echo "以下为外端地址连接您本地IP的统计数据"
$bb| Group-Object –Property:对端IP地址|select Name,Count|sort -Property count
echo "====================================="
echo "以下为状态计数"
$bb| Group-Object –Property:状态|select Name,Count|sort -Property count

再来一个英文版的,因为在PowerShell2.0 也就是Windows Server 2008 R2中,是没有-Encoding Default参数的,所以要删了它,改成全英文的描述和说明。所以用中文装逼是失败的了。因此建议大家也尽量升级PowerShell到4.0(Windows Server 2008 R2是可以升级PowerShell的)

这里要说明一下的是,该文档只适合中文和英文系统,其他语种你需要修改第7行,增加更多-ne的属性。

#Powered By kukisama   http://jiushu.blog.51cto.com/
netstat -an |Out-File  D:\3456.csv
$files = (Get-Childitem d:\3456.csv).pspath
$content = get-content $files
clear-content $files
add-Content $files -Value "proto,localAddress,duankou,duiduanip,duiduanduanou,zhuangtai"
foreach ($line in $content -ne "active connections" -ne "  proto  local address          foreign address         state" -ne "活动连接" -ne "  协议  本地地址          外部地址        状态")
   {
   $liner = $line.Replace("[::1]","local");
   $line = $liner
   $liner = $line.Replace("[::]","local");
   $line = $liner
   $line = $liner -replace("\s{1,}" ,",")
   $liner = $line
   $line = $liner -replace(":{1,}" ," ")
   $liner = $line
   $liner = $line.Replace(",TCP","TCP")
   $line = $liner
   $liner = $line.Replace(",UDP","UDP")
   $line = $liner
   $line = $liner -replace("\s{1,}" ,",")
   $liner = $line
   $liner = $line.Replace("127.0.0.1","local")
   $line = $liner
   $liner = $line.Replace("0.0.0.0","local")
   $line = $liner
  <# $liner = $line.Replace("LISTENING","监听")
   $line = $liner
   $liner = $line.Replace("ESTABLISHED","等待")
   $line = $liner
   $liner = $line.Replace("TIME_WAIT","已建立连接")
   $line = $liner
   $liner = $line.Replace("CLOSE_WAIT","关闭等待")
   $line = $liner
   $liner = $line.Replace("SYN_SENT","同步发送")#>
   add-Content $files -Value $liner 
      } 

$files
$bb = Import-Csv -Path d:\3456.csv 
echo "====================================="
echo "以下为协议计数"
$bb| Group-Object –Property:proto|select Name,Count|sort -Property count
echo "====================================="
echo "以下为您本地IP连接外端地址的统计数据"
$bb| Group-Object –Property:localAddress|select Name,Count|sort -Property count
echo "====================================="
echo "以下为外端地址连接您本地IP的统计数据"
$bb| Group-Object –Property:duiduanip|select Name,Count|sort -Property count
echo "====================================="
echo "以下为状态计数"
$bb| Group-Object –Property:zhuangtai|select Name,Count|sort -Property count

输出结果如下

时间: 2024-07-30 13:27:43

PowerShell统计本地的网络连接(CMD吐数据互访)的相关文章

查看网络连接的具体数据

输入命令:netstat -an |awk '/^tcp/ {++sta[$NF]} END {for (key in sta) print key, "\t",sta[key]}'结果:LISTEN 4ESTABLISHED 1 Linux下查看TCP各状态链接数的方法: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'仅查看连接状态的数据 一个完整的三次握手也就是 请求---应答---再次确认

Golang 如何从网络连接读出所有数据

第一种: func read(conn *net.Conn) error { defer conn.Close() buf := make([]byte, 0, 4096) len := 0 for { n, err := conn.Read(buf[len:]) if n > 0 { len += n } if err != nil { if err != io.EOF { //Error Handler } break } } // buf[:len] is the content } 第二

MMORPG大型游戏设计与开发(服务器 游戏场景 掉落与网络连接)

时间一点点的消逝,伴着自己空闲日子将要结束的时候我尽量的学习和分享场景和AI的知识给朋友们,不过很遗憾的是这些文章还有不足的地方,就是有的难点没有完全的分析到.掉落在游戏中必不可少的,同时网络连接也是网络游戏中的核心部分,那么这两个东西又怎么和场景关联起来的? 一张截图 掉落(管理器) 1.初始化(init) 根据地图的长宽初始化掉落点数据. 2.是否可掉落(is can drop) 传入坐标返回该点是否可以掉落. 3.设置掉落点(set drop position) 传入一个坐标,并将该点设置

【Android】Android 登录界面设计和网络连接及验证登录

AndroidManifest.xml <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 布局文件:activity_main.xml <RelativeLayout xm

虚拟机网络连接NAT模式,本地用Xshell连接

当虚拟机centos6网络连接使用NAT模式时,因为共用宿主机ip所以当使用Xshell时直接填写虚拟机的ip地址和22端口是无法连接虚拟机的. 这样就需要配置端口映射关系! 1. 打开虚拟网络编辑器 2. 点击更改设置 选择VMnet8点击NAT设置 3.点击添加 4. 主机端口号设在1024~65535之间,我选在2345端口,虚拟机地址就是虚拟机centos的IPv4地址,虚拟机的ssh默认端口是22 5. 一路点击确定直到退出设置页面 6. 有时需要设置本地Internet连接共享 控制

用awk数组统计日志访问状况和网络连接状态

统计ip及此ip访问的pv数 #awk '{s[$1]++}END{for(key in s) print key,s[key]}' 12.log | sort -k2rn | head 统计当前网络各种状态的连接数#netstat -na | awk '/^tcp/{s[$6]++}END{for(key in s) print key,s[key]}' 注:awk也支持过滤功能 /^tcp/过滤以tcp开头的行 #netstat -an | grep ESTAB | awk -F "[ :]

shell统计当前网络连接情况

当TCP连接数量非常大时,对当前的内部IP,外部IP的连接情况进行统计 [[email protected] account_tcp]# cat account_tcp.sh  #!/bin/bash #统计当前网络连接情况 netstat -na | awk '/^tcp/{s[$6]++}END{for(key in s)print key,s[key]}' > /root/account_tcp/state.txt #统计Local Address的TCP连接数 netstat -na |

powershell 查看程序的tcp网络连接

在运维工作中,经常查看某个业务的网络连接状况,在这里借用netstat来实现查找连接,用hash特性避免重复. [email protected]{} while(1){ ps|?{$_.path -match 'E:\\games\\梦幻XX}|%{ $id=$_.id netstat -ano | ForEach-Object { $i = $_ | Select-Object -Property Protocol , Source , Destination , Mode ,pid $nu

获取网络连接名称“本地连接”的两种方法

 方法一:通过WMI得到连接属性NETCON_PROPERTIES,这个结构体定义如下: typedef struct tagNETCON_PROPERTIES { GUID guidId; LPWSTR pszwName; LPWSTR pszwDeviceName; NETCON_STATUS Status; NETCON_MEDIATYPE MediaType; DWORD dwCharacter; CLSID clsidThisObject; CLSID clsidUiObject;