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,如需转载请自行联系原作者

相关文章
|
11天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
|
29天前
|
机器学习/深度学习 自然语言处理 数据处理
大模型开发:描述长短期记忆网络(LSTM)和它们在序列数据上的应用。
LSTM,一种RNN变体,设计用于解决RNN处理长期依赖的难题。其核心在于门控机制(输入、遗忘、输出门)和长期记忆单元(细胞状态),能有效捕捉序列数据的长期依赖,广泛应用于语言模型、机器翻译等领域。然而,LSTM也存在计算复杂度高、解释性差和数据依赖性强等问题,需要通过优化和增强策略来改进。
|
5天前
|
机器学习/深度学习 数据可视化 测试技术
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
19 0
|
6天前
|
机器学习/深度学习 API 算法框架/工具
R语言深度学习:用keras神经网络回归模型预测时间序列数据
R语言深度学习:用keras神经网络回归模型预测时间序列数据
16 0
|
6天前
|
机器学习/深度学习 数据采集 TensorFlow
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
23 0
|
6天前
|
存储 算法 前端开发
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
26 0
|
6天前
|
机器学习/深度学习 数据可视化 网络架构
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
12 0
|
7天前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android&#39;s AsyncTask simplifies asynchronous tasks for brief background work, bridging UI and worker threads. It involves execute() for starting tasks, doInBackground() for background execution, publishProgress() for progress updates, and onPostExecute() for returning results to the main thread.
9 0
|
7天前
|
网络协议 安全 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
HTTP和HTTPS是网络数据传输协议,HTTP基于TCP/IP,简单快速,HTTPS则是加密的HTTP,确保数据安全。在Android中,过去常用HttpURLConnection和HttpClient,但HttpClient自Android 6.0起被移除。现在推荐使用支持TLS、流式上传下载、超时配置等特性的HttpsURLConnection进行网络请求。
8 0
|
9天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:保护数据的关键策略
【4月更文挑战第14天】在数字化时代,网络安全与信息安全已成为维护个人隐私和企业资产的重要组成部分。本文深入探讨了网络安全漏洞的概念、加密技术的应用以及提升安全意识的重要性。通过分析当前网络威胁的常见形式,文章提供了防御策略,旨在帮助读者构建一个更加安全的网络环境。