Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #############################################################################
- # Author: Mahesh Sharma
- # Reviewer: Vikas SUkhija
- # Date: 06/10/2013
- # Modified:06/23/2013 - made it to run from any Location
- # Updated: 10/01/2017 - for alerting
- # Description: Services Monitor
- #############################################################################
- $alert = "Yes"
- $report = ".\report.htm"
- ##############Funstions#########################
- function Send-Slack ($sename, $machinename, $status)
- {
- Set-StrictMode -Version Latest
- $payload = @{
- "channel" = "#enigmabox-t-clientes"
- "icon_emoji" = ":computer:"
- "text" = "Service $sename $machinename $status"
- "username" = "Demo"
- }
- function ConvertTo([object] $item){
- add-type -assembly system.web.extensions
- $ps_js=new-object system.web.script.serialization.javascriptSerializer
- return $ps_js.Serialize($item)
- }
- $json = ConvertTo($payload)
- Write-Host $json
- $url = "https://hooks.slack.com/services/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"
- $postData = $json
- $buffer = [text.encoding]::ascii.getbytes($postData)
- [net.httpWebRequest] $req = [net.webRequest]::create($url)
- $req.method = "POST"
- $req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
- $req.Headers.Add("Accept-Language: en-US")
- $req.Headers.Add("Accept-Encoding: gzip,deflate")
- $req.Headers.Add("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7")
- $req.AllowAutoRedirect = $false
- $req.ContentType = "application/x-www-form-urlencoded"
- $req.ContentLength = $buffer.length
- $req.TimeOut = 50000
- $req.KeepAlive = $true
- $req.Headers.Add("Keep-Alive: 300");
- $reqst = $req.getRequestStream()
- $reqst.write($buffer, 0, $buffer.length)
- $reqst.flush()
- $reqst.close()
- [net.httpWebResponse] $res = $req.getResponse()
- $resst = $res.getResponseStream()
- $sr = new-object IO.StreamReader($resst)
- $result = $sr.ReadToEnd()
- $res.close()
- #Invoke-WebRequest `
- # -Body (ConvertTo-Json -Compress -InputObject $payload) `
- # -Method Post `
- #-Uri "https://hooks.slack.com/services/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" | Out-Null
- }
- ############################Define Variables for server & services##############
- $ServicesList = "winlogbeatEnigma, heartbeatEnigma, Sysmon64"
- $machineName = Hostname
- ##############################################################################
- ################################ADD HTML Content#############################
- Add-Content $report "<html>"
- Add-Content $report "<head>"
- Add-Content $report "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>"
- Add-Content $report '<title>Service Status Report</title>'
- add-content $report '<STYLE TYPE="text/css">'
- add-content $report "<!--"
- add-content $report "td {"
- add-content $report "font-family: Tahoma;"
- add-content $report "font-size: 11px;"
- add-content $report "border-top: 1px solid #999999;"
- add-content $report "border-right: 1px solid #999999;"
- add-content $report "border-bottom: 1px solid #999999;"
- add-content $report "border-left: 1px solid #999999;"
- add-content $report "padding-top: 0px;"
- add-content $report "padding-right: 0px;"
- add-content $report "padding-bottom: 0px;"
- add-content $report "padding-left: 0px;"
- add-content $report "}"
- add-content $report "body {"
- add-content $report "margin-left: 5px;"
- add-content $report "margin-top: 5px;"
- add-content $report "margin-right: 0px;"
- add-content $report "margin-bottom: 10px;"
- add-content $report ""
- add-content $report "table {"
- add-content $report "border: thin solid #000000;"
- add-content $report "}"
- add-content $report "-->"
- add-content $report "</style>"
- Add-Content $report "</head>"
- Add-Content $report "<body>"
- add-content $report "<table width='100%'>"
- add-content $report "<tr bgcolor='Lavender'>"
- add-content $report "<td colspan='7' height='25' align='center'>"
- add-content $report "<font face='tahoma' color='#003399' size='4'><strong>Service Status Report</strong></font>"
- add-content $report "</td>"
- add-content $report "</tr>"
- add-content $report "</table>"
- add-content $report "<table width='100%'>"
- Add-Content $report "<tr bgcolor='IndianRed'>"
- Add-Content $report "<td width='10%' align='center'><B>Server Name</B></td>"
- Add-Content $report "<td width='50%' align='center'><B>Service Name</B></td>"
- Add-Content $report "<td width='10%' align='center'><B>Status</B></td>"
- Add-Content $report "</tr>"
- ########################################################################################################
- ################################## Get Services Status #################################################
- Function servicestatus ($serviceslist)
- {
- foreach ($service in $serviceslist)
- {
- $serviceStatus = get-service -ComputerName $machineName -Name $service
- if ($serviceStatus.status -eq "Running") {
- Write-Host $machineName `t $serviceStatus.name `t $serviceStatus.status -ForegroundColor Green
- $svcName = $serviceStatus.name
- $svcState = $serviceStatus.status
- Add-Content $report "<tr>"
- Add-Content $report "<td bgcolor= 'GainsBoro' align=center> <B> $machineName</B></td>"
- Add-Content $report "<td bgcolor= 'GainsBoro' align=center> <B>$svcName</B></td>"
- Add-Content $report "<td bgcolor= 'Aquamarine' align=center><B>$svcState</B></td>"
- Add-Content $report "</tr>"
- }
- else
- {
- Write-Host $machineName `t $serviceStatus.name `t $serviceStatus.status -ForegroundColor Red
- if ($alert -eq "yes")
- {
- $sename = $serviceStatus.name
- $sestatus = $serviceStatus.status
- Send-Slack($sename, $machinename, $sestatus)
- #Send-Email -From $from1 -To $to -subject "Open Critical: $machineName $sename $sestatus" -smtpserver $smtphost
- }
- $svcName = $serviceStatus.name
- $svcState = $serviceStatus.status
- Add-Content $report "<tr>"
- Add-Content $report "<td bgcolor= 'GainsBoro' align=center>$machineName</td>"
- Add-Content $report "<td bgcolor= 'GainsBoro' align=center>$svcName</td>"
- Add-Content $report "<td bgcolor= 'Red' align=center><B>$svcState</B></td>"
- Add-Content $report "</tr>"
- }
- }
- }
- ######################
- servicestatus $ServicesList
- ############################################Close HTMl Tables#########################################
- Add-content $report "</table>"
- Add-Content $report "</body>"
- Add-Content $report "</html>"
- #####################################################################################################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement