如何在PowerShell脚本中使用netstat监控网络连接情况-创新互联

如何在PowerShell脚本中使用netstat监控网络连接情况?相信很多新手小白对此束手无策,通过这篇文章的总结,希望你能找到解决的方法。

创新互联公司服务项目包括平罗网站建设、平罗网站制作、平罗网页制作以及平罗网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,平罗网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到平罗省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

需求:想把netstat -na吐出来的数据统计一下,看看本地有没有连接外网。因部分服务器不能连接外网。如果有连接外网,需要报警。
注意:因为netstat是cmd的命令,尽管在PowerShell下可以运行这个命令,但是吐出来的数据是没办法再次加工的,它不是PowerShell原生命令。
原生命令比如Get-Command,可以通过以下脚本直接得到Get-Command中的所有的Name值,但是netstat不行。
Get-Command | Export-Csv -Path c:\1\2.csv
Import-CSV -Path c:\1\2.csv  | Select-Object Name
所以解决方法是把数据吐到一个CSV文件中,然后针对CSV进行加工,最后得到需要的统计信息。
经过测试,需要PowerShell3.0以上,也就是Windows Server 2012以上的版本(windows8以上也可以)。
脚本:
netstat -an |Out-File  c:\1\1.csv
$files = (Get-Childitem c:\1\1.csv).pspath
$content = get-content $files | Select-Object -Skip 4
clear-content $files
add-Content $files -Value "proto,Local Address,Port1,Foreign Address,Port2,State"
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
$liner = $line.Replace("127.0.0.1"," local")
$line = $liner
$liner = $line.Replace("0.0.0.0"," local")
$line = $liner
$liner = $line.Replace("10.10.14.20"," local")
$line = $liner
$liner = $line.Replace("*","outside")
$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
add-Content $files -Value $liner
}

以上脚本创建csv文件
以下脚本触发报警

$emailSmtpServer = "smtp.163.com"
$emailSmtpServerPort = "25"
$emailSmtpUser = "normanjin@163.com"
$emailSmtpPass = "XXXXXXX"
$Body = "有连接外网,可能是***!"
$emailFrom = "normanjin@163.com"
$emailTo = "normanjin@163.com"

$content = Import-CSV -Path c:\1\1.csv | Select "Foreign Address"
foreach ($line in $content -notlike 'local' -notlike '10.10' -notlike 'outside'  -notlike '220.181.12.17')
{
$line
}
if($line -ne $null)
{
$emailMessage = New-Object System.Net.Mail.MailMessage( $emailFrom , $emailTo )
$emailMessage.Subject = "有连接外网,可能是***!"
$emailMessage.Body = $Body

$SMTPClient = New-Object System.Net.Mail.SmtpClient( $emailSmtpServer , $emailSmtpServerPort )
$SMTPClient.EnableSsl = $False
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential( $emailSmtpUser , $emailSmtpPass );
$SMTPClient.Send( $emailMessage )
}

以上就是在PowerShell脚本中使用netstat监控网络连接情况的方法,看完之后是否有所收获呢?如果想了解更多相关内容,欢迎关注创新互联行业资讯!

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

标题名称:如何在PowerShell脚本中使用netstat监控网络连接情况-创新互联
标题网址:https://www.cdcxhl.com/article8/cescop.html

成都网站建设公司_创新互联,为您提供网站维护用户体验自适应网站品牌网站制作网站内链移动网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设