/build/static/layout/Breadcrumb_cap_w.png

Powershell Script to Check Cisco Switch Temperature

Will need to test the switch has a temperature control that returns any data via show env temperature

Param (
    [Parameter(ValueFromPipeline=$true)]
    [String[]]$Commands = @("LOGINCOMMANDS","en","terminal length 0","show env temperature"),
    [string]$RemoteHost = "SWITCH-IP",
    [string]$Port = "23",
    [int]$WaitTime = 500
)

$Result = ""
$Result | out-file \\server\location\TEMP.txt
cls
$Socket = New-Object System.Net.Sockets.TcpClient($RemoteHost, $Port)
If ($Socket)
{   $Stream = $Socket.GetStream()
    $Writer = New-Object System.IO.StreamWriter($Stream)
    $Buffer = New-Object System.Byte[] 1024 
    $Encoding = New-Object System.Text.AsciiEncoding

    ForEach ($Command in $Commands)
    {   $Writer.WriteLine($command) 
        $Writer.Flush()
        Start-Sleep -Milliseconds $WaitTime
    }
    Start-Sleep -Milliseconds ($WaitTime * 4)
    $Result = @()
    While($Stream.DataAvailable) 
    {   $Read = $Stream.Read($Buffer, 0, 1024) 
        $Result = ($Encoding.GetString($Buffer, 0, $Read))
        $Result = [string]::concat($Result,",")
        "$Result" | out-file '\\server\location\TEMP.txt' -Append
    }
}

$RCSV= Get-Content \\server\location\TEMP.txt | Where {$_ -match 'temperature: '} 
write-host $RCSV

[int]$count = 0
[int]$datas = 0

foreach ($line in $RCSV)
{
$check=$false
$check = $line -match 'temperature: '

if ($check = $true) 
{
$newline = $line -replace '.*: '
$NL = $newline -replace 'C'
write-host " NL = $NL"
$datas = $datas + $NL
$count = $count + 1
}
}
[int]$avg=($datas/$count)
[int]$favg=($avg * 1.8 + 32)

CLS
write-host "Average Core Temp = $favg degrees F"

if ($favg -lt 90)
{
send-mailmessage -from "Switch@Domain.edu" -to "Alert@Domain.edu" -subject "Core Temperature Cool" -body "Average Core Temp = <font color='blue'><b> $favg degrees F</b></font>" –BodyasHtml -smtpServer smtp.domain.edu
}
elseif ($favg -ge 90 -and $favg -le 100)
{
send-mailmessage -from "Switch@Domain.edu" -to "Alert@Domain.edu" -subject "Core Temperature Warm" -body "Average Core Temp = <font color='orange'><b> $favg degrees F</b></font>" –BodyasHtml -smtpServer smtp.domain.edu
}
elseif ($favg -ge 100)
{
send-mailmessage -from "Switch@Domain.edu" -to "Alert@Domain.edu" -subject "**Core Temperature HOT**" -body "<font color='red'><b> Average Core Temp = $favg degrees F - Check environment!</font></b>" –BodyasHtml -priority High -smtp smtp.domain.edu
}
else
{
send-mailmessage -from "Switch@Domain.edu" -to "Alert@Domain.edu" -subject "Core Temperature Faulty Reading" -body "Unable to pull accurate core temperature - Check Core Temperature script" –BodyasHtml -smtpServer smtp.domain.edu
}

Comments

This post is locked
 
This website uses cookies. By continuing to use this site and/or clicking the "Accept" button you are providing consent Quest Software and its affiliates do NOT sell the Personal Data you provide to us either when you register on our websites or when you do business with us. For more information about our Privacy Policy and our data protection efforts, please visit GDPR-HQ