Added all original files with some edits
parent
1794872c02
commit
f58641a5e7
@ -0,0 +1,114 @@
|
|||||||
|
#!/usr/bin/pwsh
|
||||||
|
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Name: Get-OPHPowerStatus.ps1
|
||||||
|
The purpose of this script is to gather the power status of
|
||||||
|
each OPF Hub machine via IPMI.
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
Each host in the Hub is queried via IPMI for its chassis power
|
||||||
|
status. The results are then table-ized and displayed.
|
||||||
|
|
||||||
|
.PARAMETER Credential
|
||||||
|
[Required] - The credentials used to query the OpenBMC for the
|
||||||
|
chassis power status.
|
||||||
|
|
||||||
|
.PARAMETER Hostname
|
||||||
|
[Optional] - The hostname of a single Hub system to query the
|
||||||
|
chassis power status of.
|
||||||
|
|
||||||
|
.NOTES
|
||||||
|
Version: 1.0
|
||||||
|
Updated: Aug 2, 2022
|
||||||
|
|
||||||
|
Author:
|
||||||
|
Maximillian Schmidt - FRA - Computational Scientist
|
||||||
|
Oregon State University - CQLS + OSL
|
||||||
|
max@cqls.oregonstate.edu
|
||||||
|
#>
|
||||||
|
|
||||||
|
[CmdletBinding()]
|
||||||
|
Param
|
||||||
|
(
|
||||||
|
[Parameter(Mandatory = $false)][PSCredential] $Credential,
|
||||||
|
[Parameter(Mandatory = $false)][string] $Hostname
|
||||||
|
)
|
||||||
|
|
||||||
|
# Default number of hosts
|
||||||
|
$testRange = 1..12
|
||||||
|
|
||||||
|
$oobCreds = $null
|
||||||
|
|
||||||
|
if ($Credential)
|
||||||
|
{
|
||||||
|
$oobCreds = $Credential
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$oobCreds = Get-Credential
|
||||||
|
}
|
||||||
|
|
||||||
|
$user = $oobCreds.UserName
|
||||||
|
[string]$pass = $oobCreds.GetNetworkCredential().Password
|
||||||
|
$results = [ordered]@{}
|
||||||
|
|
||||||
|
if ($Hostname)
|
||||||
|
{
|
||||||
|
$result = (ipmitool -I lanplus -C 17 -H "$Hostname" -U "$user" -P "$pass" chassis power status | Out-String).split(' ')[-1].split("`n")[0]
|
||||||
|
|
||||||
|
if ($result -eq 'off' -or $result -eq 'on')
|
||||||
|
{
|
||||||
|
$results.Add($hostname,$result)
|
||||||
|
Write-Host '.' -NoNewline
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Write-Host ""
|
||||||
|
Write-Error "Unknown power state ($result) for $hostname!"
|
||||||
|
$results.Add($hostname,"unknown")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Write-Host "`n Gathering results from hosts. Please wait." -NoNewline
|
||||||
|
|
||||||
|
# Get each of the OPH machine's power status
|
||||||
|
$testRange | ForEach-Object {
|
||||||
|
$hostname = "oph$($_).osuosl.oob"
|
||||||
|
|
||||||
|
$result = (ipmitool -I lanplus -C 17 -H "$hostname" -U "$user" -P "$pass" chassis power status | Out-String).split(' ')[-1].split("`n")[0]
|
||||||
|
|
||||||
|
if ($result -eq 'off' -or $result -eq 'on')
|
||||||
|
{
|
||||||
|
$results.Add($hostname,$result)
|
||||||
|
Write-Host '.' -NoNewline
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Write-Host ""
|
||||||
|
Write-Error "Unknown power state ($result) for $hostname!"
|
||||||
|
$results.Add($hostname,"unknown")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host ""
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Colorized table - https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences#text-formatting
|
||||||
|
$results | Format-Table Name,@{
|
||||||
|
Label = "Status"
|
||||||
|
Expression =
|
||||||
|
{
|
||||||
|
switch ($_.Value) # Switch on the hash table item's value
|
||||||
|
{
|
||||||
|
'off' { $color = "31"; break } # red
|
||||||
|
'on' { $color = "32"; break } # green
|
||||||
|
'unknown' { $color = "33"; break } # yellow
|
||||||
|
default { $color = "0" }
|
||||||
|
}
|
||||||
|
$e = [char]27
|
||||||
|
"$e[${color}m$($_.Value)${e}[0m"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue