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

简介:

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#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的属性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#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


输出结果如下

wKiom1WD3vfz5htzAAFCKGwfCSs330.jpg



本文转自 九叔 51CTO博客,原文链接:http://blog.51cto.com/jiushu/1663669,如需转载请自行联系原作者

相关文章
|
6月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
504 0
|
7月前
|
机器学习/深度学习 数据采集 传感器
【故障诊断】基于matlab BP神经网络电机数据特征提取与故障诊断研究(Matlab代码实现)
【故障诊断】基于matlab BP神经网络电机数据特征提取与故障诊断研究(Matlab代码实现)
253 0
|
8月前
|
数据采集 存储 算法
MyEMS 开源能源管理系统:基于 4G 无线传感网络的能源数据闭环管理方案
MyEMS 是开源能源管理领域的标杆解决方案,采用 Python、Django 与 React 技术栈,具备模块化架构与跨平台兼容性。系统涵盖能源数据治理、设备管理、工单流转与智能控制四大核心功能,结合高精度 4G 无线计量仪表,实现高效数据采集与边缘计算。方案部署灵活、安全性高,助力企业实现能源数字化与碳减排目标。
265 0
|
9月前
|
Python
LBA-ECO CD-32 通量塔网络数据汇编,巴西亚马逊:1999-2006,V2
该数据集汇集了1999年至2006年间巴西亚马逊地区九座观测塔的碳和能量通量、气象、辐射等多类数据,涵盖小时至月度时间步长。作为第二版汇编,数据经过协调与质量控制,扩展了第一版内容,并新增生态系统呼吸等相关计算数据,支持综合研究与模型合成。数据以36个制表符分隔文本文件形式提供,配套PDF说明文件,适用于生态与气候研究。引用来源为Restrepo-Coupe等人(2021)。
432 1
|
5月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
256 0
|
6月前
|
机器学习/深度学习 数据采集 运维
改进的遗传算法优化的BP神经网络用于电厂数据的异常检测和故障诊断
改进的遗传算法优化的BP神经网络用于电厂数据的异常检测和故障诊断
|
8月前
|
存储 监控 算法
基于 Python 跳表算法的局域网网络监控软件动态数据索引优化策略研究
局域网网络监控软件需高效处理终端行为数据,跳表作为一种基于概率平衡的动态数据结构,具备高效的插入、删除与查询性能(平均时间复杂度为O(log n)),适用于高频数据写入和随机查询场景。本文深入解析跳表原理,探讨其在局域网监控中的适配性,并提供基于Python的完整实现方案,优化终端会话管理,提升系统响应性能。
224 4
|
9月前
|
开发者
鸿蒙仓颉语言开发教程:网络请求和数据解析
本文介绍了在仓颉开发语言中实现网络请求的方法,以购物应用的分类列表为例,详细讲解了从权限配置、发起请求到数据解析的全过程。通过示例代码,帮助开发者快速掌握如何在网络请求中处理数据并展示到页面上,减少开发中的摸索成本。
鸿蒙仓颉语言开发教程:网络请求和数据解析
|
11月前
|
安全 网络安全 定位技术
网络通讯技术:HTTP POST协议用于发送本地压缩数据到服务器的方案。
总的来说,无论你是一名网络开发者,还是普通的IT工作人员,理解并掌握POST方法的运用是非常有价值的。它就像一艘快速,稳定,安全的大船,始终为我们在网络海洋中的冒险提供了可靠的支持。
334 22
|
11月前
|
存储 数据库 Python
利用Python获取网络数据的技巧
抓起你的Python魔杖,我们一起进入了网络之海,捕捉那些悠游在网络中的数据鱼,想一想不同的网络资源,是不是都像数不尽的海洋生物,我们要做的,就是像一个优秀的渔民一样,找到他们,把它们捕获,然后用他们制作出种种美味。 **1. 打开魔法之门:请求包** 要抓鱼,首先需要一个鱼网。在Python的世界里,我们就是通过所谓的“请求包”来发送“抓鱼”的请求。requests是Python中常用的发送HTTP请求的库,用它可以方便地与网络上的资源进行交互。所谓的GET,POST,DELETE,还有PUT,这些听起来像偶像歌曲一样的单词,其实就是我们鱼网的不同方式。 简单用法如下: ``` im
200 14