基于POWERSHELL的文件检测工具

 背景:本人就职于业务导向型的传统企业,技术部门虽有划分开发部和运行部,但运维实力仍属于基础运维。平时工作除了解决用户报障、监控服务可用性、监控服务器性能指标外,偶尔帮公司写写运维脚本,提高运维效率。

今早领导脑子一拍,说要对公司视频播放文件进行监控,我想公司视频播放文件进行监控的可靠性确实是得监控起来,一激灵写出代码如下,供大家参考。

先进行需求分析:

  • 原本仅需在播放服务器本机写个监控文件修改或MD5值变化脚本即可,但领导担心服务器被黑客拿下的情况下,无法产生告警。遂使用监控机监控播放机文件。
  • 将播放机D:\sharedfiles\ 挂载在监控机E:\目录下,新建监控机F:\作为本地拷贝目录,监控两目录的差异。
  • 文件发生变化产生告警。

环境准备:

  • 两台windows服务器:一台是视频文件源、一台是监控机
  • 一个爱动脑筋的领导
  • 一位踏实肯干的码农

 架构图及原理图:

视频文件监控

代码部分: 

1、 构造正则$Match_regex格式为:( MD5_1 | MD5_2 )   

2、$string -Match $Match_regex进行正则匹配,使用Match的输出结果进行判断是否匹配(后改成使用系统变量$match)

$destfile = dir E:\ |Get-ChildItem      #播放机被监控目录
$sourcefile = dir F:\ |Get-ChildItem    #监控机本身监控目录
$hashlist = (Get-FileHash $destfile -Algorithm MD5 ).Hash
#$hashlist

$Match_regex = '('+ (($hashlist |foreach {[regex]::Escape($_)}) -join "|") + ')'
$Match_regex 

$sourcefile = dir D:\Users\test\Desktop\code\2 |Get-ChildItem
"this"
#(Get-FileHash $destfile -Algorithm MD5 ).Hash[1]$
$flag2 = (Get-FileHash $sourcefile -Algorithm MD5 ).Hash  | ForEach-Object { $_ |where {$_ -Match $Match_regex}}
if ($flag2 -eq $null)
   {"files null"}
else
   {
   if ($flag2.count -eq $sourcefile.count)
     {"success"}
   else
     {
     "not equal"
     SendAlert
     }     
   }
"finish"
SendHeartBeat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只晨兴夜不得寐的运维人

你的打赏,是我今晚餐桌上的鸡腿

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值